2010-11-14 6 views
0

Возможно ли иметь единую модель представления со списком, который используется для выпадающего списка, а также получить выбранное значение выпадающего списка из модели представления при отправке формы?ASP.NET MVC - Modelbinding с Dropdownlist

Если да, то как я могу это сделать?

+0

Post ваш код формы , Вам не нужен параметр, зависящий от того, как вы настраиваете форму. – rboarman

+0

Я изменил свой вопрос. – Rookian

ответ

2

Конечно, как всегда начать с определения вашей модели вида:

public class MyViewModel 
{ 
    public int? SelectedItemValue { get; set; } 
    public IEnumerable<Item> Items { get; set; } 
} 

public class Item 
{ 
    public int? Value { get; set; } 
    public string Text { get; set; } 
} 

затем контроллер:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      // TODO: Fill the view model with data from 
      // a repository 
      Items = Enumerable 
       .Range(1, 5) 
       .Select(i => new Item 
       { 
        Value = i, 
        Text = "item " + i 
       }) 
     }; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(MyViewModel model) 
    { 
     // TODO: based on the value of model.SelectedItemValue 
     // you could perform some action here 
     return RedirectToAction("Index"); 
    } 
} 

и, наконец, сильно типизированной:

<% using (Html.BeginForm()) { %> 
    <%= Html.DropDownListFor(
     x => x.SelectedItemValue, 
     new SelectList(Model.Items, "Value", "Text") 
    ) %> 
    <input type="submit" value="OK" /> 
<% } %>