DropDownListFor未选择默认
问题描述:
我有问题试图让预选值工作。 我试过在SelectListItem中包含Selected,但它不会预先选择。 任何线索,为什么它不匹配?谢谢你的帮助。DropDownListFor未选择默认
RetailerId是int。 (它不是定义为枚举)
零售商是一个枚举,例如:
public enum Retailer
{
Sears = 10,
Macys = 20
}
这里是查看代码:
@Html.DropDownListFor(x => x.RetailerId,
Enum.GetValues(typeof(Retailer)).Cast<Retailer>()
.OrderBy(o => o.GetDescription())
.Select(o => new SelectListItem() { Text = o.GetDescription(), Value = o.ToString(), Selected = (o.ToInt() == Model.RetailerId) }),
new { @data_placeholder = "Select Retailer", @class = "form-control" })
答
你产生的SelectListItem
一个集合,其中所述Value
是要么不能绑定到RetailerId
这是int
的“Sears”或“Macys”。
请注意,当绑定到模型属性时,SelectListItem
的Selected
属性将被忽略。该方法在内部根据您绑定的属性的值设置Selected
属性,并且由于其值为int
,它不匹配任何选项值,因为必须是第一个选项。
您可以通过修改.Select
条款,使这项工作,以
.Select(o => new SelectListItem() { Text = o.GetDescription(), Value = ((int)o).ToString() }),
另外,模型属性
public Retailer RetailerId { get; set; }
改变的.Select
子句
.Select(o => new SelectListItem() { Text = o.GetDescription(), Value = o.ToString() }),
感谢你这么很多,它的工作原理! thx的解释!本来希望在装订时知道选定的财产在某些文件中是无用的。 – user1161137