无法使用TagBuilder组合标签

时间:2012-12-06 15:21:09

标签: c# asp.net-mvc-4 html-helper

我正在尝试构建组合代码:

第一个标记:<span class="requiredInidicator">* </span> 第二个标记:<label>SomeText</label>(为简洁而剪切属性)

我想将它们组合起来返回一个MVCHtmlString但是下面的代码完全忽略了span。有人可以指出 我做错了什么

这是我的代码:

// Create the Label
var tagBuilder = new TagBuilder("label");
tagBuilder.Attributes.Add("id", "required" + id);
//I get the id earlier fyi - not pertinent fyi for this question )

// Create the Span
var required = new TagBuilder("span");
required.AddCssClass("requiredInidicator"); 
required.SetInnerText("* ");

//Now combine the span's content with the label tag
tagBuilder.InnerHtml += required.ToString(TagRenderMode.Normal);
tagBuilder.SetInnerText(labelText);
var tag = MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.Normal));
return tag;

创建标记后, span 将被完全忽略。当我在调试期间检查标记时,它并不关心我通过.InnerHtml+=附加的所需内容

有什么明显的事我做错了吗?

5 个答案:

答案 0 :(得分:7)

试试这样:

var label = new TagBuilder("label");
label.Attributes.Add("id", "required" + id);
//I get the id earlier fyi - not pertinent fyi for this question )

// Create the Span
var span = new TagBuilder("span");
span.AddCssClass("requiredInidicator");
span.SetInnerText("* ");

//Now combine the span's content with the label tag
label.InnerHtml = span.ToString(TagRenderMode.Normal) + htmlHelper.Encode(labelText);
return MvcHtmlString.Create(label.ToString(TagRenderMode.Normal));

答案 1 :(得分:3)

您不应该致电SetInnertext(特别是在刚刚分配了Innerhtml之后)。你想使用其中一个。

如果您想要追加,请继续使用InnerHtml += labeltext

答案 2 :(得分:2)

你总是可以这样做:

string output = "";
output += tabBuilder.ToString(TagRenderMode.Normal);
output += required.ToString(TagRenderMode.Normal);

return MvcHtmlString.Create(output);

问题可能是TagBuilder假设一个根级HTML标记,但我不确定。

答案 3 :(得分:2)

这个怎么样:

tagBuilder.SetInnerText(labelText + required.ToString(TagRenderMode.Normal));

答案 4 :(得分:1)

尝试使用span

上的InnerHtml属性
// Create the Span
var required = new TagBuilder("span");
required.InnerHtml ("SOME TEXT");