2012-03-12 14 views
7

私はHtmlHelper拡張メソッドを作成しています。組み込みのフレームワークメソッドの多くは、結果HTMLにレンダリングされるhtmlAttributes(オブジェクト型のような)のようなパラメータをサポートしています。 htmlAttributesパラメータもサポートする独自のメソッドのオーバーロードを、文字列連結ロジックをタグの属性として再描画せずに提供するにはどうすればよいですか?HtmlHelper拡張機能でhtmlAttributesパラメータをサポートする方法は?

+0

あなたはこれまでに何がありますか? –

答えて

17

オブジェクトには、オブジェクトを名前/値の辞書に変換するメソッドがあります。名前/値の辞書は、作成中のタグにマージできます。あなたがオーバーロードを提供したり、空Dictionaryが生成されますされ、htmlAttributesためnull値を供給するために、デフォルト値を使用するか

var attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes) as IDictionary<string, object>; 

TagBuilder tag = new TagBuilder("script"); 
tag.MergeAttributes(attributes); 
tag.MergeAttribute("type", "text/javascript"); 
tag.MergeAttribute("src", scriptPath); 

:たとえば、このコードは、余分な属性が渡されているものは何でもして<script>タグを生成します。

(それは任意のオブジェクトについてだけに使用しても安全ですので、この方法はまた、有効なHTML属性などに属性名をサニタイズ。)

+0

うわー、ちょうど私が必要なもの。ありがとうございました! – blaster

関連する問題