如何从ViewBag设置ASP.NET MVC DropDownList的默认值

时间:2019-08-07 17:13:47

标签: c# asp.net asp.net-mvc razor

在控制器索引中,我具有以下内容:

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

显示项目

4 个答案:

答案 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>

我希望它对您有用

@Html.DropDownListFor how to set default value

答案 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")