在控制器索引中,我具有以下内容:
ViewBag.Assignees = (await GetAllUsers()).Select(a =>
new SelectListItem
{
Text = a.DisplayName,
Value = a.Username,
Selected = a.DisplayName == "John Smith"
}).OrderBy(x => x.Text).ToList();
在视图中,我有以下内容:
@Html.DropDownListFor(model => model.Assignee,
ViewBag.Assignees as List<SelectListItem>,
"Select Assignee",
new { id = "ddlAssignee", @class = "form-control"})
下拉列表将按预期填充,但是不会设置默认值(selected = true)(该值确实存在)。有人可以告知上面有什么问题吗?
更新:
通过将SelectListItem.Value
更改为a.DisplayName
(与SelectedListItem.Text
相同),我实现了它。仍不确定是什么阻止了下拉列表使用Selected = true
答案 0 :(得分:0)
如果model.Assignee
带有值,并且它是一个整数,则默认为0,它将覆盖 SelectListItem 所选值。
我建议设置model.Assignee
。
答案 1 :(得分:0)
Here two ways that i use.
WAY 1
@Html.DropDownListFor(model => model.Assignee,
ViewBag.Assignees as List<SelectListItem>,
"Value", // property to be set as Value of dropdown item
"Text", // property to be used as text of dropdown item
"1"), // value that should be set selected of dropdown
new { id = "ddlAssignee", @class = "form-control"})
WAY 2
<select name="SelectName" value="1" class="w-100">
@foreach (var item in ViewBag.Collection) {
<option value="@item.Id">@item.Name</option>
}
</select>
我希望它对您有用
答案 2 :(得分:0)
在您的视图集中:
@Html.DropDownListFor(model => model.Assignee,
ViewBag.Assignees as List<SelectListItem>,
"Select Assignee",
new { id = "ddlAssignee", @class = "form-control", @value = "Default value"})
答案 3 :(得分:0)
已定义列表时。 使用此
@Html.DropDownList("CoverageDropDown", new SelectList(Model.youList, "Code", "Description",item.seletecItem), "Select")