ASP.NET MVC TagBuilder.SetInnerText() 未正确设置文本

发布于 2024-08-04 14:17:26 字数 766 浏览 4 评论 0原文

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

谢谢。

So I am creating a HtmlHelper extension method and I have run into a problem when using TagBuilder.SetInnerText(). The helper outputs an option tag. Here is the source of the helper:

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);
    }

In my view I call

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

but the inner text of the tag does not get set and I am left with

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

Any ideas on why the SetInnerText() is not setting the text correctly?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

胡渣熟男 2024-08-11 14:17:26
return tagBuilder.ToString(TagRenderMode.SelfClosing) - is the problem

它尝试输出 ,但没有地方可以插入 InnerText。

做到:

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

It tries to output <option value="" />, where there is nowhere to insert InnerText.

Make it:

return tagBuilder.ToString(TagRenderMode.Normal)
冷情 2024-08-11 14:17:26

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

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

I think that correct way to use InnerText is this below. You need to set InnerText on Create Tag, and after you define extra attributes.

TagBuilder tagBuilder = new TagBuilder("select")
{
    InnerHtml = "set Anything"
};
tagBuilder.MergeAttribute("value", value);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文