Вы можете получить выбранное значение из выпадающего списка так же, как и для текстовых полей.
Использование модели по умолчанию связывания
[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) %>
Но, вы говорите о выбранном элементе? Затем, как получить все элементы из списка? – Josh
Как я уже сказал, браузер отправляет только выбранное значение элемента обратно на сервер. Единственный способ получить все элементы из списка - сделать то же, что и вы, чтобы поместить их туда (что бы это ни было). См. Мое обновление для примера. –
Спасибо за ваш полный ответ :) – Max