2010-12-07 6 views
0

"ドロップダウングループ"コードを使用して自動的にHTMLを構築する独自のHTMLヘルパメソッドを作成して、プロジェクトで自動的にドロップダウンを構築しようとしています。しかし、モデルを完全にサポートしている間にこれを行う必要があります。ASP.NET MVC2のカスタムDropdownFor

私のエンドコードはこのように見える必要があります。

... "121"は、データベースからキーと値のペアの辞書を返すコードグループです。

これまでのところ、私は自分のHTMLヘルパーメソッドを持っています。

public static MvcHtmlString CodeList<T, TProp>(this HtmlHelper<T> html, Expression<Func<T, TProp>> expr, int category) 
    { 
     Dictionary<int, string> codeList = CodeManager.GetCodeList(category); //returns dictionary of key/values for the dropdown 
     return html.DropDownListFor(expr, codeList, new Object()); //this line here is the problem 
    } 

DropDownListForメソッドに正確にどのように手を差し伸べるかわかりません。私はhtml.DropDownListFor()を返すと仮定していますが、私は何か明白ではありません。どんな助け?そこ

答えて

1

あなたが行く:

public static MvcHtmlString CodeList<T, TProp>(
    this HtmlHelper<T> html, 
    Expression<Func<T, TProp>> expr, 
    int category 
) 
{ 
    var codeList = CodeManager.GetCodeList(category); 

    var selectList = new SelectList(
     codeList.Select(item => new SelectListItem { 
      Value = item.Key.ToString(), 
      Text = item.Value 
     }), 
     "Value", 
     "Text" 
    ); 
    return html.DropDownListFor(expr, selectList); 
} 

備考:などCodeManager.GetCodeListなどの静的メソッドが孤立してあなたのコンポーネントをテストユニットの面で非常に悪いです。

+0

ドロップダウンを希望するたびに「GetCodeList」を呼び出すことなく、私は「GetCodeList」を分けることをお勧めしますか? –

関連する問題