【问题标题】:ASP.NET MVC TagBuilder.SetInnerText() not setting the text correctlyASP.NET MVC TagBuilder.SetInnerText() 未正确设置文本
【发布时间】:2010-11-29 05:12:16
【问题描述】:

所以我正在创建一个 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() 没有正确设置文本的任何想法?

谢谢。

【问题讨论】:

    标签: c# asp.net-mvc tagbuilder


    【解决方案1】:
    return tagBuilder.ToString(TagRenderMode.SelfClosing) - is the problem
    

    它试图输出&lt;option value="" /&gt;,那里无处插入InnerText。

    制作:

    return tagBuilder.ToString(TagRenderMode.Normal)
    

    【讨论】:

    【解决方案2】:

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

    TagBuilder tagBuilder = new TagBuilder("select")
    {
        InnerHtml = "set Anything"
    };
    tagBuilder.MergeAttribute("value", value);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2012-12-26
      • 2016-09-01
      相关资源
      最近更新 更多