2009-08-13 2 views
0

내 응용 프로그램의 여러 페이지에 나타나는 특정 종류의 드롭 다운에 대해 HtmlHelper 함수를 만들고 싶습니다. 기본적으로 기존 DropDownList 함수 주위에 장식을 추가하려고하지만 인코딩 중입니다. 인코딩되지 않은 인라인 XML에 동적 마크 업을 포함하는 방법

<Extension()> _ 
    Public Function Year(ByVal HtmlHelper As System.Web.Mvc.HtmlHelper, ByVal name As String) As String 

     Return _ 
      <label> 
       Year: 
       <%= HtmlHelper.DropDownList(name) %> 
      </label>.ToString 

    End Function 

다음 반환 : 여기 내 확장 방법이다

대신 내가 원하는 것을
<label>Year:&lt;select id="year" name="year"&gt;&lt;option value="2007"&gt;2007&lt;/option&gt;&lt;option value="2008"&gt;2008&lt;/option&gt;&lt;option selected="selected" value="2009"&gt;2009&lt;/option&gt;&lt;/select&gt;</label> 

: 즉

<label>Year:<select id="year" name="year"><option value="2007">2007</option><option value="2008">2008</option><option selected="selected" value="2009">2009</option></select></label> 

, 문자열이되기 전에 DropDownList로는 HTML 인코딩 라벨 안에 넣어 라. 나는 이것을 다음과 같이 할 수있다.

<Extension()> _ 
    Public Function Year(ByVal HtmlHelper As System.Web.Mvc.HtmlHelper, ByVal name As String) As String 

     Return "<label>Year:" & HtmlHelper.DropDownList(name) & "</label>" 

    End Function 

그러나 나는 VB의 인라인 XML을 사용하고 싶다. DropDownList의 결과를 인코딩하지 않으려면 어떻게해야합니까?

답변

1

우선, 레이블 대신 앞에 드롭 다운을 둘러싸도록 레이블을 사용 했습니까?

그런 다음 나는 HtmlHelper.DropDownList(name) 문자열을 반환합니까? 그런 다음 인코딩해야합니다. XML을 원하면 XElement.Parse(HtmlHelper.DropDownList(name))과 같은 것을 사용해야합니다.

나는 그는 XML 내부 리터럴 할 구문 모르겠지만, 이것은 당신이 XML로 바로 LINQ를 사용하여 단지 수 충분히 작은 : "

Dim result as XElement = New XElement("label", _ 
    XElement.Parse(HtmlHelper.DropDownList(name))) 
Return result.ToString() 
+0

내가 레이블을 앞에하고 지정할 수 있습니다 에 대한 "하지만, 만약 내가 드롭 다운 주위에 테이블이나 div, 예를 들어 넣어 싶었 동일한 질문을했을거야. 이것은 내가 의도 한대로 작동하기 때문에 "Parse"가 문자열에서 XML 요소로 되돌아가는 것 같습니다 : <% = XElement.Parse (HtmlHelper.DropDownList (name)) %> – gfrizzle

관련 문제