2009-09-17 3 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

관련 문제