Html.DropDownList - Как добавить дополнительные <option>в список - PullRequest
7 голосов
/ 08 марта 2012

Я использую 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 ]

5 голосов
/ 08 марта 2012

Я не уверен, но почему бы вам не составить список непосредственно перед вашим @html.DropDownList

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

, а затем добавьте к нему нужный элемент.

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

и, наконец, передайте его в свой синтаксис и посмотрите, к чему это приведет

Html.DropDownList("LogType",myList);

извините, это быстрый ответ с помощью моего iPhone , не уверен, что это решит вашу проблему, но я пытался помочь как можно больше.

3 голосов
/ 08 марта 2012

Я пытался сделать это раньше и покончить с использованием jQuery:

$("#LogType").append($("<option />").val("0").html("-- All --"));
1 голос
/ 28 августа 2013

Просто для другого подхода я был поражен тем, сколько ответов на форумах было на этот же вопрос, и все они казались чрезмерно сложными из-за того, чего легко достичь в 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>

Хотя не проверял производительность и т. Д., Но чувствовал, что стоит поделиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...