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”。

请注意,当绑定到模型属性时,SelectListItemSelected属性将被忽略。该方法在内部根据您绑定的属性的值设置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() }), 
+0

感谢你这么很多,它的工作原理! thx的解释!本来希望在装订时知道选定的财产在某些文件中是无用的。 – user1161137