好的,我有代码:
@Html.LabelFor(model => model.Status,
new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.Status,
SalesHubb.Models.Lead.Statuses
.Select(i => new SelectListItem { Text = i, Value = i }))
@Html.ValidationMessageFor(model => model.Status)
</div>
正确输出<select>
,并在页面上预先选择了<option>
。
我也有代码:
@Html.LabelFor(model => model.Type, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Model.Type
@Html.DropDownListFor(model => model.Type,
SalesHubb.Models.Task.Types
.Select(i => new SelectListItem { Text = i, Value = i }))
@Html.ValidationMessageFor(model => model.Type)
</div>
这并不会将selected
属性应用于生成的HTML中的正确(或实际上是任意)<option>
。 SalesHubb.Models.Lead.Statuses
和SalesHubb.Models.Task.Types
都是public static string[]
。
我能看到的唯一区别是,非工作页面的模型是通过转换方法创建的(我已经检查过,所有数据都是正确的,并且存在于模型中),而工作页面只是被拉来自数据库db.Leads.Find(id)
。
任何帮助都会很棒!我真的很难过为什么两个基本相同的代码片段不会以同样的方式工作。
答案 0 :(得分:0)
我现在找到了我的问题的答案。我有一个路由值,也称为类型,它覆盖模型状态值,而不是列表中的东西。这意味着我无法预先选择值,因为它不在列表中。重命名路线值解决了这个问题。