mvc 5表中的SelectList,DropDownList为空值

时间:2016-01-29 20:51:36

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

我使用下面的代码创建一个下拉列表

控制器

ViewBag.Id= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name")

查看

 @Html.DropDownList("Id", null, htmlAttributes: new { @class = "form-control" })

我的问题是如何修改SelectList以添加空白项目,以便为DropDownList自动添加空白项目。

感谢。

4 个答案:

答案 0 :(得分:43)

使用接受optionLabel

overloads之一
@Html.DropDownListFor(m => m.ID, (SelectList)ViewBag.MyList, "Please select", new { @class = "form-control" })

或者如果您不想使用强类型方法

@Html.DropDownList("ID", (SelectList)ViewBag.MyList, "Please select", new { @class = "form-control" })

将使用第3个参数中指定的文本添加第一个选项并使用null

<option value="">Please Select</option>

答案 1 :(得分:2)

您可以使用此重载:

public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, string optionLabel, object htmlAttributes);

其中optionLabel是默认空项的文本。

答案 2 :(得分:1)

在我的项目中,这些工作:

控制器

ViewBag.TagHfoFlagId= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name")

查看

 @Html.DropDownList("TagHfoFlagId", null,"--Select Name--", htmlAttributes: new { @id = "tags" })

答案 3 :(得分:0)

可接受的答案确实有效,但是即使您之前已经选择了一个,它也会在视图的下拉列表中显示默认(空)值。如果希望在渲染视图后将已选择的值显示在下拉列表中,请使用以下方法:

控制器

ViewBag.Fk_Id_Parent_Table = new SelectList(db.Parent_Table, "Id", "Name", Child_Table.Fk_Id_Parent_Table);
return View(ChildTable);

查看

@Html.DropDownList(
             "Fk_Id_Parent_Table",
             null, 
             "Not Assigned", 
             htmlAttributes: new { @class = "form-control" }
                  )