ASP.NET MVC 2 (.NET 3.5) を使用しており、オプション リストとなるものを手動で定義する必要があります。そうすると、ドロップダウン メニューが表示され、各マニュアル エントリに「System.Web.Mvc.SelectListItem」が表示されます。
私のビューモデルは、リストを次のように定義しています。
public SelectList YesNoList
{
get
{
List<SelectListItem> tmpList = new List<SelectListItem>();
tmpList.Add(new SelectListItem {Text = "", Value = ""});
tmpList.Add(new SelectListItem {Text = "Yes", Value = "1"});
tmpList.Add(new SelectListItem {Text = "No", Value = "0"});
YesNoList = new SelectList(tmpList,"");
}
private set{}
}
ビューでは、Html.DropDownList を使用してこれを参照します。
Html.DropDownList("FieldName", viewmodel.YesNoList);
最終的な Web ページでレンダリングされることを期待しているものは次のようになります。
<select id="FieldName" name="FieldName">
<option value=""/>
<option value="1">Yes</option>
<option value="0">No</option>
</select>
代わりに私は得る:
<select id="FieldName" name="FieldName">
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
<option>System.Web.Mvc.SelectListItem</option>
</select>
タイプが返される理由がわからないので、私は途方に暮れています。ビューモデルの定義の何が問題なのか、またはより良い方法を誰かが指摘してくれれば幸いです。SelectList は、値を反復処理してテキストを表示するための一貫した方法を提供するため、C# クラスのコレクションから SelectList を派生させることをためらっていました。
事前に感謝します。誰かが助けてくれることを願っています。
乾杯、
J