ASP.NET MVC TagBuilder.SetInnerText () неправильно устанавливает текст - PullRequest
2 голосов
/ 17 сентября 2009

Поэтому я создаю метод расширения 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 () неправильно устанавливает текст?

Спасибо.

Ответы [ 2 ]

8 голосов
/ 17 сентября 2009
return tagBuilder.ToString(TagRenderMode.SelfClosing) - is the problem

Он пытается вывести <option value="" />, где некуда вставить InnerText.

Сделать это:

return tagBuilder.ToString(TagRenderMode.Normal)
0 голосов
/ 26 апреля 2019

Я думаю, что правильный способ использования InnerText - это ниже. Вам нужно установить InnerText в Create Tag и после определения дополнительных атрибутов.

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