ASP.NET MVC下拉菜单,带有默认的空选项


Answers:


129

下面将在string.Empty之前添加到ViewData [“ Menu”]项目中指定的SelectList(或IEnumerable)。选择将具有id和name MenuID

<%= Html.DropDownList( "MenuID",
                      (IEnumerable<SelectListItem>)ViewData["Menu"],
                      string.Empty ) %>

文档:DropDownList方法


13
谢谢。默认选项的optionLabel参数名称使我失望:)
James Newton-King

4
哎呀...我也是我也开始写自己的助手方法了...垃圾名称恕我直言-听起来它旁边会输出一个<label>标签。
格罗克先生

请注意,ViewData键必须与DropDown-Id不同(在本示例中为“ Menu”!=“ MenuID”)。否则,框架将覆盖下拉列表,而忽略第三个参数。
Manuel Allenspach 2014年

太棒了!修复了我的select2.js问题。
gkonuralp 2015年

7

例如:

    Controller :

    private void InitScreenInfoCollate()
    {   
        IEnumerable<MstBrd> listbrd = ibrandRepository.GetItemsByUsercode("");
        ViewBag.Brands = new SelectList(listbrd, "brd_cod", "brd_mei", null);

    }

    View :
    @Html.DropDownList("Brands", null, string.Empty, new { @class = "form-control"})

结果:

内嵌图片


0

这个简单的解决方案适用于我的mvc5项目:

鉴于:

@{
     Model.ModelItemsList.Add(new ModelItem{ });
     SelectList modelItemSelectList = new SelectList(Model.ModelItemsList, "ModelItemID", "ModelItemName");
}

只需将新项目添加到List<>要在视图中显示的项目即可。在我的情况下,我向中添加了一个空的“ ModelItem” List<ModelItem> ModelItemList。由于我的ModelItemID是Guid,因此我必须在控制器方法中检查Guid.Empty并执行一些代码。就这样。


-8

此处介绍的解决方案对我来说非常有效:http : //forums.asp.net/t/1142484.aspx/1

基本思想是,您将的AppendDataBoundItems属性设置DropDownListtrue,然后放入asp:ListItemDropDownList,这将成为默认项,所有数据绑定项都位于其后。


4
-1这是用于ASP.NET Web窗体,而不是MVC。
JoeBrockhaus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.