DropDownList不选择默认值

时间:2017-07-30 07:44:53

标签: asp.net-mvc

我在尝试获得预选值时遇到问题。 我尝试在SelectListItem中包含Selected,但它没有预先选择。 关于它为什么不匹配的任何线索?谢谢你的帮助。

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" })

1 个答案:

答案 0 :(得分:3)

您生成SelectListItem的集合,其中Value是“Sears”或“Macys”,无法绑定到属RetailerId的{​​{1}}。< / p>

请注意,绑定到model属性时会忽略int的{​​{1}}属性。在内部,该方法根据您绑定的属性的值设置Selected属性,并且因为它是SelectListItem,它与您的任何选项值都不匹配,并且选择了第一个选项,因为是。

您可以通过将Selected子句修改为

来完成此工作
int

或者,将模型属性更改为

.Select

.Select(o => new SelectListItem() { Text = o.GetDescription(), Value = ((int)o).ToString() }), 子句

public Retailer RetailerId { get; set; }