所以我有一个包含项目列表的表单,每个项目都有一个选择列表。我的代码是这样的(删除了无关的项目):
@for( var i = 0; i < Model.InputSlots.Count; i++)
{
@Html.DropDownListFor(model => model.InputSlots[i].VariableId,
new SelectList(Model.Variables, "VariableId", "Name"),
"--Select Variable--",
new { @class = "span8" })
}
下拉列表显示正确,如果我选择其中一项并发布表单,则选择正确发布,但是当我加载将 VariableId 设置为有效选项的页面时,它不会显示所选选项,而是显示改为默认的“--Select Variable--”。
我在代码中的许多其他地方使用了 DropDownListFor,它按预期工作,只是在这种情况下没有。我能说的唯一区别是它引用了数组项的属性。
我在视图中设置了一个断点以验证 Model.InputSlots[i].VariableId 是否设置为有效选项 (2),并且我还查看了生成的 HTML 以确保有一个值为2 并且两者似乎都是正确的,但是选项元素上没有“选择”值为 2。
这是一种已知的行为,还是我只是在我没有注意到的地方做错了什么?
更新:
在 SelectList 构造函数中设置选定项确实有效,即:
@Html.DropDownListFor(model => model.InputSlots[i].VariableId,
new SelectList(Model.Variables, "VariableId", "Name", Model.InputSlots[i].VariableId),
"--Select Variable--",
new { @class = "span8" })
但它似乎不想像在其他情况下那样从表达式中获取它。