2009-09-09 3 views
2

Может ли кто-нибудь помочь мне получить значения из выпадающего списка в asp.net mvc?Получение значений из раскрывающегося списка asp.net mvc

я могу получить значения из текстовых полей, и т.д. ... но, как я получаю эти 2 вещи ...

  1. Получение выбранного элемента Значение выпадающего списка из класса контроллера
  2. Getting все список пунктов выпадающего списка из класса контроллера

Благодарности

ответ

15

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

Использование модели по умолчанию связывания

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult GetValueExample(string MyList) { 
    //MyList will contain the selected value 
    //... 
} 

или из FormCollection

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult GetValueExample(FormCollection form) { 
    string val = form["MyList"]; 
    //... 
} 

или из запроса

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult GetValueExample(string MyList) { 
    string val = Request.Form["MyList"]; //or 
    val = Request["MyList"]; 
    //... 
} 

Где ваш выпадающий список с именем "MyList".

<%= Html.DropDownList("MyList", MyItems) %> 

или прямой HTML

<select name="MyList"> 
    <option value="1">Item 1</option> 
    <option value="2">Item 2</option> 
</select> 

Браузер будет представлять только выбранное значение из выпадающего списка, а не всех остальных значений. Чтобы получить список всех других элементов, вы должны вызвать код, который заполнял список, в первую очередь (если вы использовали Html.DropDownList()).

Update

[AcceptVerbs(Http.Get)] 
public ActionResult GetValueExample() { 
    ViewData["MyItems"] = GetSelectList(); 
    return View(); 
} 

[AcceptVerbs(Http.Get)] 
public ActionResult GetValueExample(string MyList) { 
    //MyList contains the selected value 
    SelectList list = GetSelectList(); //list will contain the original list of items 
    //... 
} 

private SelectList GetSelectList() { 
    Dictionary<string, string> list = new Dictionary<string, string>(); 
    list.Add("Item 1", "1"); 
    list.Add("Item 2", "2"); 
    list.Add("Item 3", "3"); 
    return new SelectList(list, "value", "key"); 
} 

//... 

<%= Html.DropDownList("MyList", ViewData["MyItems"] as SelectList) %> 
+0

Но, вы говорите о выбранном элементе? Затем, как получить все элементы из списка? – Josh

+1

Как я уже сказал, браузер отправляет только выбранное значение элемента обратно на сервер. Единственный способ получить все элементы из списка - сделать то же, что и вы, чтобы поместить их туда (что бы это ни было). См. Мое обновление для примера. –

+0

Спасибо за ваш полный ответ :) – Max

1

Ну это трудно правильно ответить, так как вы дали так мало информации, но в общем случае вы получаете выбранное значение в методе post контроллера.

Нечто подобное могло бы объяснить это лучше:

Рассмотреть этот DropDownList:

//instantiate the dropdownlist in the controller method. 
    public ActionResult Create() { 
    List<string> items = new List<string>() {"first", "second", "third"}; 
    SelectList SomeSelectItems = new SelectList(items); 
    ViewData["list"] = SomeSelectItems; 
    return View();  
    } 
    <%= Html.DropDownList("DDL", (SelectList)ViewData["list"]) %> 

В контроллере вы получите значение DropDownList так:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Create(string DDL) 
    { 
     string theValue = DDL; 
     return View(); 
    } 

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

+0

Что такое someselectitems? То, что меня смущает – Josh

+0

А я вижу, хорошо. Я добавлю некоторые примеры кода, чтобы показать вам, как создать экземпляр selectlist. – Robban

1

Я думаю, что вы должны пересмотреть это. Значения выпадающего списка должны поступать от контроллера и отправляться на просмотр для отображения в выпадающем меню, чтобы пользователь мог выбирать. Затем форма страницы отправляет выбранное значение обратно в контроллер. Данные всегда должны быть на стороне сервера, а представление предназначено только для отображения.

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