我正在尝试构建一个组合标签:
第一个标签:<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+=追加的要求
有什么明显的我做错了吗?
发布于 2012-12-06 15:35:55
就像这样:
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));发布于 2012-12-06 15:32:44
您不应该调用SetInnertext (特别是在刚刚分配了Innerhtml之后)。你想用一个或另一个。
如果您希望添加,请继续使用InnerHtml += labeltext。
发布于 2012-12-06 15:31:34
你可以一直这样做:
string output = "";
output += tabBuilder.ToString(TagRenderMode.Normal);
output += required.ToString(TagRenderMode.Normal);
return MvcHtmlString.Create(output);问题可能是TagBuilder假设有一个根级的HTML标记,但我不确定。
https://stackoverflow.com/questions/13746776
复制相似问题