【发布时间】:2016-01-23 23:23:32
【问题描述】:
在我的 ViewModel 中,我有两个字段:
public AdTypeEnum Type { get; set; }
public IList<SelectListItem> TypeEnumList { get; set; }
这就是我填写列表的方式:
public void SetLists()
{
TypeEnumList = new List<SelectListItem>();
TypeEnumList.Add(new SelectListItem { Value = "0", Text = "Select the type"});
foreach (var en in Enum.GetValues(typeof(AdTypeEnum)).Cast<AdTypeEnum>())
{
TypeEnumList.Add(new SelectListItem
{
Value = ((int)en).ToString(),
Text = en.ToString(),
Selected = Type == (AdTypeEnum)en ? true : false
});
}
}
然后我只是在我的视图上呈现一个下拉列表:
@Html.DropDownListFor(x => x.Type, Model.TypeEnumList, new { @class = "form-control" })
但所选值不会呈现,并且始终选择第一个选项。当我检查 HTML 中的选择时,我发现没有一个选项具有选定属性,但是当我调试我的控制器方法时,我可以看到始终有一个 selectListItem 具有属性 Selected=true。为什么我的视图在渲染时突然消失了?
【问题讨论】:
-
您可以尝试添加一个默认值:stackoverflow.com/questions/7229626/…
-
什么意思?我正确填充了 List
,总是有一个元素得到 Selected=true,但神奇的是,视图上没有一个选项具有 selected 属性:/ 这就是我想要弄清楚的 -
您没有正确填充
SelectList。不要添加第一个选项(使用value="0')) - 您使用正确的重载添加标签选项 -@Html.DropDownListFor(x => x.Type, Model.TypeEnumList, "Select the type", new { .. })生成null值。在循环中,它应该是Value = en.ToString(),,最后,在绑定到属性时设置SelectListItem的Selected属性是没有意义的。它的值Type决定选择哪个选项(Selected属性被DropDownListFor()方法忽略
标签: c# asp.net-mvc dropdown