Html.DropDownList - 如何添加额外的 <option> 到列表

Posted

技术标签:

【中文标题】Html.DropDownList - 如何添加额外的 <option> 到列表【英文标题】:Html.DropDownList - How to add extra <option> to list 【发布时间】:2012-03-25 19:24:28 【问题描述】:

我正在使用html.DropDownList 来创建一个像这样的选项列表

Html.DropDownList("LogType", new SelectList(Model.LogTypeList, "ID", "Name", Model.SelectedLogType),"-- ALL --");

如您所见,我传递了一个列表,但也传递了一个额外的参数来添加一个额外的选项:"-- All --"。结果如下:

<select name="LogType" id="LogType">
<option value="">-- ALL -- </option>
<option value="1">Debug</option>
<option value="2" selected="selected">Error</option>
</select>

如何给-- All -- 赋值0 而无需自己手动构建下拉列表?

【问题讨论】:

这个问题已经在***.com/a/581944/476786回答了 How do I set a value for the default option with Html.DropDownList的可能重复 【参考方案1】:

我不确定,但是,为什么不在@html.DropDownList 之前构建列表

var myList = new SelectList(Model.LogTypeList, "ID", "Name", Model.SelectedLogType);

然后将所需的项目附加到它。

var myList.add(new selectItem("-- ALL --",0));

最后将它传递给你的语法,看看会产生什么结果

Html.DropDownList("LogType",myList);

抱歉,这是使用我的 iPhone 的快速回答,不确定它是否能解决您的问题,但我已尽力提供帮助。

【讨论】:

【参考方案2】:

我之前尝试过这样做并以使用 jQuery 结束:

$("#LogType").append($("<option />").val("0").html("-- All --"));

【讨论】:

【参考方案3】:

只是对于不同的方法,我很惊讶论坛上有多少关于同一个问题的答案,所有这些似乎都过于复杂,因为可以在 WebForms 中使用 AppendDataItems 轻松实现(当然,它 是 网络表单!)。

刚才对我来说效果很好,保持所有内容内联并将视图和模型关注点分开:

@Html.DropDownListFor(model => model.Operators,
                new SelectList(new[]  
                    new id=-1, name="Please select an operator"
                    .Union(Model.Operators
                            .Select( o=> new  id=o.Id, name=o.Name)
                    ), "id", "name")) 

呈现为:

<select id="Operators" name="Operators">
    <option value="-1">Please select an operator</option>
    <option value="1">Tony Bolton</option>
    <option value="2">Joe Bloggs</option>
</select>

虽然没有检查性能等,但觉得值得分享。

【讨论】:

以上是关于Html.DropDownList - 如何添加额外的 <option> 到列表的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 的MVC框架中,如何给DropDownList添加事件。在线等

使用 JQuery 将选择属性添加到 Html.DropDownList

如何通过手动赋值来使用@Html.DropDownList? [复制]

如何在 html-page 中使用 Dropdownlist 更改选择?

html.dropdownlist 的 onchange 事件

如何将多个 Html.DropDownList 选定值从 View(.aspx) 传递给 MVC 控制器的操作?