2010-11-23 1 views
1

私はASP.Net MVC2で非常に単純な作業になると思っていたことに固執しています。MVC2 DropDownList/ListBoxヘルパーを拡張して、selectオプション要素にカスタム属性を含めるにはどうしたらいいですか?

特定のSELECT OPTION要素に背景色を適用する必要があります。ドロップダウンを生成するには、Html.DropDownListおよびHtml.ListBox htmlヘルパーを使用しています。理想的にはこれらを使用したいので、フォームコレクションから選択したアイテムを再バインドする必要はありません。フォームが提出され、再表示されます。

私が書いた別のhtmlヘルパーの中から呼び出されているヘルパーは、ヘルパーには入っていないので、ビューには入っていません。コードは

var setOfOptions = question.AnswerList.Values.Select(x => new SelectListItem(){ 
          Value = x.ID.ToString(), 
          Text = x.Caption + " - " + x.Style, 
          Selected = question.Answers.Contains((object)x.ID) 
         }); 
answerlistHtml = html.DropDownList(question.GetQualifiedId(), setOfOptions, "Please select...", new { @class = "superselect disabled" }).ToHtmlString(); 

がそこでここでは、IEnumerableをに私達の「AnswerListValue」オブジェクトのコレクションを回し、そしてそこからSELECT HTMLを生成している...このようになります。しかし、これはSelectListItemにHtmlAttributesプロパティがないので、SELECT OPTION要素にx.Styleを渡す方法がありません。しかし、私もMVC2を調べた後、DropDownListWithAttributesオブジェクトを作成する方法を見つけ出すことはできません - ここでは、ここでは

<select id="whatever" name="whatever"> 
    <option value="1" class="mystyle1">val1</option> 
    <option value="2" class="mystyle2">val2</option> 
    <option value="3" class="mystyle3">val3</option> 
</select> 

明白な答えは、私自身のSelectListItemWithAttributesオブジェクトを作ることです...私はSELECTのような見てみたいものですソースコード。

あなたはこの状況で何をしますか?

答えて

0

あなた自身のDropDownヘルパーを作成する必要はありません。 をデフォルトのドロップダウンヘルパーに拡張する必要があります。それは非常にシンプルで、MVCに関する最高のことです。

私はあなたが考えを得るためにCreating a SelectListItem with the disabled="disabled" attributeの答えを確認することをお勧めします。

+0

ありがとうnEEbz。それは面白い。実際には私はすでに非常に似たようなものを試してきました.HTMLヘルパーからHTMLオブジェクトをさらに操作するためにHTMLをロードしましたが、ちょっと複雑なように思えました。 – centralscru

関連する問題