2011-01-13 9 views
2

私はobjectが生成されたタグにHtml属性を追加するのに使われる標準のHtmlHelpersのほとんどのために構文を複製しようとしています。カスタムHtmlHelperでC#オブジェクトを使用するには?

私のような何かがしたい:私はビューから属性を追加することができますので、私はその新しいオブジェクトのキーにアクセスするにはどうすればよい

<%: Html.MyCustomHelper("SomeValue", new { id="myID", @class="myClass" })%> 

を?

これは反射を使用しますか?私はその言葉が少し投げられたと聞いたことがあるが、私はそれに精通していない。

答えて

4

objectを辞書に変換するには、組み込みヘルパーメソッドでRouteValueDictionaryを使用します。彼らはまた、HTML属性を受け入れるためのobjectを受け入れ1、および1つの2つのオーバーロードを提供するIDictionary<string, object>を受け入れ:

public static string MyCustomHelper(this HtmlHelper htmlHelper, string someValue, object htmlAttributes) 
{ 
    return htmlHelper.MyCustomHelper(someValue, new RouteValueDictionary(htmlAttributes)); 
} 

public static string MyCustomHelper(this HtmlHelper htmlHelper, string someValue, IDictionary<string, object> htmlAttributes) 
{ 
    // Get attributes with htmlAttributes["name"] 
    ... 
} 
関連する問題