[asp.net]你如何增加从接受字符串参数传递的整数

标签: Asp.net HTML Razor C#
发布时间: 2017/3/26 0:24:46
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我创建了一个方法,创建一个 Html 元素 4 倍和

public IHtmlString customHtml(string htmlCode){
    for(int i = 0; i<4 i++){
        htmlCode += htmlCode;
    }
    return new HtmlString(htmlCode);
 }

当这种方法称为 4 倍 int someNumber 串联的字符串会等它要递增 1-4

int someNumber = 1;

@customHtml("<div>"+(someNumber++)+"<div>")

与 Html 被由此产生︰

<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>

而是这样︰

<div>1</div>
<div>1</div>
<div>1</div>
<div>1</div>

元素不会永远是 <div> 和数量不总是通过传递的字符串和 int 可以从任何编号不只是 1 开始

解决方法 1:

你需要在你 htmlCode 传递作为将被格式化后的模板︰

你 razor 语法成为这︰

@customHtml("<div>{0}<div>")

你的方法看起来像这样︰

public IHtmlString customHtml(string htmlCode){
    var sb = new StringBuilder();

    for(int i = 1; i<=4; i++){
        sb.AppendFormat(htmlCode, i);
    }
    return new HtmlString(sb.ToString());
 }

你最初的一次不工作的原因是因为你将字符串传递给你的方法。你没有传递的表达式。这意味着,您传递的确切字符串 "<div>1</div>" 向您的方法,然后您的方法只是写入该字符串出四倍。

增编︰

现在,如果你真的想要结构像你的例子,你可以这样做︰

public IHtmlString customHtml(Func<string> s)  {
  var sb = new StringBuilder();

    for(int i = 1; i<=4; i++){
        sb.Append(s());
    }
    return new HtmlString(sb.ToString());
}

然后,你 Razor 语法如下所示︰

int someNumber = 1;
@customHtml(() => "<div>" + someNumber++ + "</div>").Dump();

这些解决方案为您提供了相同的结果︰<div>1</div><div>2</div><div>3</div><div>4</div>

官方微信
官方QQ群
31647020