私のアプリケーションの多くのページに表示される特定の種類のドロップダウンに対して、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:<select id="year" name="year"><option value="2007">2007</option><option value="2008">2008</option><option selected="selected" value="2009">2009</option></select></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の結果をエンコードしないようにするにはどうすればよいですか?
私は "ラベルとそれに先行して指定することもできますfor "としていますが、例えばドロップダウンの周りに表やdivを配置したい場合は同じ質問があります。私が探していたのは、これが意図したとおりに動作するため、StringからXML要素に戻すための "Parse"でした。 <%= XElement.Parse(HtmlHelper.DropDownList(name))%> – gfrizzle