如何使DropDownListForin 中的值显示在中SelectedStatusId?现在显示一行中的第一个,无论值如何SelectedStatusId
在控制器中
List<SelectListItem> Statuses = new List<SelectListItem>();
Statuses.Add(new SelectListItem() { Text = "Passed", Value = "PSS" });
Statuses.Add(new SelectListItem() { Text = "Failed", Value = "FL" });
Statuses.Add(new SelectListItem() { Text = "Blocked", Value = "BLCK" });
Statuses.Add(new SelectListItem() { Text = "Not run", Value = "NR" });
ViewBag.Statuses = new SelectList(Statuses, "Value", "Text");
在视野中
@Html.DropDownListFor(
x => x.SelectedStatusId,
(SelectList)ViewBag.Statuses,
new { @class = "form-control" }
)
你有几个相互叠加的错误的爆炸性混合物 - 因此你无法弄清楚。
假设我们有自己的自定义状态:
而且它通常可以存储在数据库中,但我们会手动创建它并将其传递给视图:
(真的很反感穿越
ViewBag,推荐大家使用强类型模型)您的 Web 表单将如下所示:
专门为您选择了一个示例。
首先,对我来说
SelectedStatusId,它也是一个诚实的 int 和模型中的 int。你不清楚SelectedStatusId是什么,但在SelectListItem-- 行中。其次,查看类定义——我是通过比较当前元素的值和 Id
SelectListItem手动填写的。SelectedModel.SelectedStatusId有用。这将是我要向您展示的第一个示例。
更远。
SelectListItem您可以使用现成的帮助程序,而不是通过 lambda 表达式手动创建它SelectList。我在controller里什么都不改,view会变成这样:这也行。我们
SelectList传递数据,说要读取哪些字段,并说选择哪个元素。笔记。您的状态已经有字段
Text和Value,它们符合预期SelectListItem,我特意选择了一个示例来避免这种情况(只会造成混淆)。PS 您使用了框架实用程序类而不是域类。
SelectListItem是来自视图层的一个类,让视图决定如何显示它。