Как работает связывание модели с списком выбора? - PullRequest
1 голос
/ 05 января 2011

У меня проблемы с получением значений списка выбора в моей коллекции форм. Я попытался создать модель представления с атрибутом с тем же именем, что и в списке выбора.

Я, честно говоря, просто понимаю, что ДЕЙСТВИТЕЛЬНО не понимаю, как привязка модели работает с списками выбора. Я только предполагал, что применяются следующие соглашения:

  • Назовите список выбора так же, как атрибут в модели, с которой вы хотите связать его.

Кроме того, я действительно не понимаю. Я просмотрел несколько книг, и, честно говоря, они бесполезны.

Как список выбора работает с а) коллекцией форм и б) конкретной моделью?

1 Ответ

2 голосов
/ 05 января 2011

Вот пример:

Модель:

public class MyViewModel
{
    public string SelectedItemValue { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

Контроллер:

public class HomeController: Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            // TODO: Fetch those from a repository
            Items = new SelectList(
                new[]
                {
                    new SelectListItem { Value = "1", Text = "Item 1" },
                    new SelectListItem { Value = "2", Text = "Item 2" },
                    new SelectListItem { Value = "3", Text = "Item 3" },
                }, 
                "Value", 
                "Text"
            )
        };
    }

    [HttpPost]
    public ActionResult Index(string selectedItemValue)
    {
        // Here you get the selected value from the dropdown
        return ...
    }
}

Вид:

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