ASP.NET MVC - привязка моделей с выпадающим списком - PullRequest
0 голосов
/ 14 ноября 2010

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

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

1 Ответ

2 голосов
/ 15 ноября 2010

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

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" />
<% } %>
...