【发布时间】:2010-09-17 15:54:25
【问题描述】:
我正在使用 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);
我期望在最终网页上呈现的内容应该是这样的:
<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>
我不知所措,因为我无法弄清楚为什么返回类型,所以如果有人能向我指出 viewmodel 定义有什么问题,或者指出更好的方法,我将不胜感激。我犹豫是否要从 C# 类的集合中派生 SelectList,因为 SelectList 会提供一种一致的方式来遍历值和显示文本。
先谢谢了,希望有人能帮忙。
干杯,
J
【问题讨论】:
-
FWIW,不应该存在没有实现的“私有集”。
标签: c# model-view-controller asp.net-mvc-2 selectlist