2009-06-05 2 views
3

В моем представлении страницы есть раскрывающийся список, который привязывается к коллекции с контроллера. Это работает отлично, однако я хочу, чтобы вставить элемент в верхней части DropDownList, что не в моей коллекции, например, список в настоящее время получает следующие пунктыASP.Net MVC Добавить элементы, которые необходимо связать Список распаковки

Open 
Closed 

Я хочу добавить третий вариант «Все» но я не хочу добавлять этот параметр в свою базу данных. В Webforms я бы просто связал элемент управления, а затем вставил другой элемент, но, похоже, это невозможно с MVC. Правильно ли я думаю, что мне нужно добавить Javascript в представление, чтобы добавить этот новый элемент после того, как выпадающий список был связан?

Благодаря

+0

Почему бы не использовать <% = Html.DropDownList ("DropDown", "все")%>? потому что на стороне сервера значение будет пустой или пустой строкой, я думаю .. и вы получите условие. – Vikas

ответ

9

Нет. Постройте свои данные как список элементов SelectListItems и добавьте в контроллер.

var list = db.Table 
       .Select(t => new SelectListItem 
           { 
            Key = t.ID.ToString(), 
            Value = t.Name 
           }) 
       .ToList(); 
    list.Insert(0, new SelectListItem { Key = "-1", Value = "All" }); 

    ViewData["TableSelect"] = list; 

На стороне вид:

<%= Html.DropDownList("TableID", 
          (IEnumerable<SelectListItem>)ViewData["TableSelect"]) %> 
+0

Мы также можем использовать <% = Html.DropDownList («TableSelect»)%> напрямую, если одно и то же имя содержится в viewdata. – Vikas

+0

В конечном счете, он должен проверить это на стороне сервера, потому что GavD не хочет, чтобы все было в DB – Vikas

+0

. Я не могу получить список. Insert для его работы подразумевает отсутствие метода вставки. – Gavin

0

Простой

вы можете сделать это, как вы хотите в контроллере.

и передать его в viewdata.

другой опция - непосредственно страница просмотра.

<%= Html.DropDownList("DropDown","all")%> 

Но вы можете добавить только один вариант ..

Убедитесь, что вы не хранить добавленные варианты в Уре дБ, не так ли? , прежде чем вы сохраните его, проверьте значение параметра в действии и примените свою логику.

+0

Значение для этой пустой строки, и поэтому я не думаю, что она будет отправлена ​​обратно. Если вам нужно значение типа «все» вместо «none», вам необходимо настроить список на стороне сервера (или с помощью Javascript). – tvanfosson

Смежные вопросы