2016-01-29 3 views
9

Я использую ниже код, чтобы создать выпадающийMVC 5 SelectList из таблицы с пустым значением для DropDownList

контроллер

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

Посмотреть

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

Мой вопрос как я могу изменить SelectList, чтобы добавить пустой элемент, чтобы был пустой элемент aut omatically добавлено для DropDownList.

Спасибо.

ответ

14

Используйте один из overloads, который согласует optionLabel

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

Спасибо за ответ. Поэтому я не могу изменить SelectList, чтобы получить желаемый результат? – ary

+0

Нет, но зачем вам это нужно? Вы всегда можете создать свой собственный «IEnumerable » и добавить вставить первый с помощью «Text =» ... »' и 'Value =" "', но это действительно не имеет смысла. –

+0

Потому что я хочу принять решение в контроллере имеют пустое значение нет. Будет случай, когда пустое значение не будет. – ary

1

Вы можете использовать эту перегрузку:

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

где optionLabel текст для пустого элемента по умолчанию.

+0

Можете ли вы привести пример, пожалуйста. Кроме того, я хочу добавить пустое значение «» с идентификатором id -1 в SelectList. Благодарю. – ary

+2

Например: '@ Html.DropDownList (" Id ", null, htmlAttributes: new {@class =" form-control ", optionLabel:" [not selected] "})' Если текст [[не выбран] "равен вы выбрали значение _null_ в качестве значения. – romanoza

+0

Я получаю ошибку «Лучшая перегрузка для« DropDownList »dosen't имеет параметр с именем optionLabel« – ary

0

В моем проекте работает эти строки

Контроллер

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

Посмотреть

@Html.DropDownList("TagHfoFlagId", null,"--Select Name--", htmlAttributes: new { @id = "tags" }) 
Смежные вопросы