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

时间:2012-03-08 09:41:11

标签: c# asp.net html asp.net-mvc forms

我正在使用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?

3 个答案:

答案 0 :(得分:5)

我不确定,但是,为什么不在@html.DropDownList

之前构建列表
var myList = new SelectList(Model.LogTypeList, "ID", "Name", Model.SelectedLogType);

然后将所需的项目添加到其中。

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

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

Html.DropDownList("LogType",myList);
抱歉,这是一个快速回答使用我的iPhone ,不确定它是否能解决您的问题,但我尽可能多地帮助。

答案 1 :(得分:3)

我之前尝试过使用jQuery:

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

答案 2 :(得分:1)

仅仅针对不同的方法,我对同一个问题的论坛上有多少答案感到惊讶,所有这些答案似乎过于复杂,因为在使用AppendDataItems的WebForms中可以轻松实现(授予,是< / em> webforms!)。

这对我来说很有用,保持一切内联并保持视图和模型的关注点分开:

@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>

虽然没有检查过表演等,但觉得值得分享。