3

所以我正在创建一个 HtmlHelper 扩展方法,并且在使用 TagBuilder.SetInnerText() 时遇到了问题。助手输出一个选项标签。这是助手的来源:

public static string Option(this HtmlHelper helper, string value, string text, object htmlAttributes) {
        TagBuilder tagBuilder = new TagBuilder("option");

        tagBuilder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
        tagBuilder.MergeAttribute("value", value);
        tagBuilder.SetInnerText(text);

        return tagBuilder.ToString(TagRenderMode.SelfClosing);
    }

在我看来,我打电话

<%= Html.Option("value", "text", new { }) %>

但是标签的内部文本没有设置,我只剩下

<option value="value"> </option>

关于为什么 SetInnerText() 没有正确设置文本的任何想法?

谢谢。

4

2 回答 2

10
return tagBuilder.ToString(TagRenderMode.SelfClosing) - is the problem

它试图输出<option value="" />,没有地方可以插入 InnerText。

做了:

return tagBuilder.ToString(TagRenderMode.Normal)
于 2009-09-17T16:16:04.483 回答
-1

我认为正确的使用InnerText方法如下。您需要InnerText在创建标签上进行设置,并在定义额外属性之后。

TagBuilder tagBuilder = new TagBuilder("select")
{
    InnerHtml = "set Anything"
};
tagBuilder.MergeAttribute("value", value);
于 2019-04-26T17:22:00.123 回答