2009-09-17 2 views
2

Так что я создаю метод расширения HtmlHelper, и у меня возникла проблема при использовании TagBuilder.SetInnerText(). Помощник выводит тег опции. Вот источник помощника:ASP.NET MVC 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() не правильно устанавливает текст?

Спасибо.

ответ

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

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

Сделать это:

return tagBuilder.ToString(TagRenderMode.Normal) 
+0

Спасибо! Я знал, что упускаю из виду что-то глупое. –

+0

Опуская режим рендеринга, он также будет работать. TagRenderMode.Normal - это режим рендеринга, используемый '.ToString()'] (http://aspnet.codeplex.com/SourceControl/changeset/view/72551#266517). – patridge

Смежные вопросы