我正在尝试在Razor文件中添加下拉列表。此下拉列表的列表从控制器传递。 控制器:
public ActionResult Edit(int id = 0)
{
TaskModels task_models = db.Tasks.Find(id);
listStatusItems.Add(new SelectListItem
{
Text = "Open",
Value = "open"
});
listStatusItems.Add(new SelectListItem
{
Text = "Close",
Value = "close"
});
listStatusItems.Where(m => m.Value.Equals(task_models.Status, StringComparison.OrdinalIgnoreCase)).FirstOrDefault().Selected = true;
ViewData["Status"] = listStatusItems;
return View(task_models);
}
查看:
@{
var status = (List<SelectListItem>)ViewData["Status"];
}
和
<div class="ddl-label">
@Html.LabelFor(model => model.Status)
</div>
<div class="ddl-field">
@Html.DropDownListFor(model => model.Status, status, "--Select status--")
@Html.ValidationMessageFor(model => model.Status)
</div>
我的问题是,在@ Html.DropDownListFor行之前,我可以看到状态列表是正确的。此列表中一个项目的“已选择”字段为“true”。它应该显示在下拉列表中。但是,在@ Html.DropDownListFor行之后,这个“Selected”被设置为“false”。然后,在网页中,下拉列表的值为“ - 选择状态 - ”。我无法弄清楚为什么会发生这种情况。
非常感谢您的帮助。