MVC DropDownListFor Value не может быть нулевым - PullRequest
2 голосов
/ 21 октября 2010

у меня есть код:

<%: Html.DropDownListFor(
       model => model.CompanyName, 
       new SelectList(ViewData["ActiveCompanies"] as IEnumerable, 
       "Id", "Name"))
%>

список заполняется в порядке имен и т. Д., Но имя выбранного элемента не привязывается к Model.CompanyName (было бы хорошо, если бы решение возвращало идентификатор, чтобы я мог получить что-то вроде

<%: Html.DropDownListFor(
        model => model.CompanyID, 
        new SelectList(ViewData["ActiveCompanies"] as IEnumerable, 
        "Id", "Name"))
 %>

на самом деле это было бы лучше для моих целей, но было бы очень полезно, если бы я мог выяснить, почему данные не становятся связанными.

1 Ответ

5 голосов
/ 21 октября 2010

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

<%: Html.DropDownListFor(model => model.CompanyID, 
    new SelectList(Model.ActiveCompanies, "Id", "Name")) %>

где свойство ActiveCompanies заполняется в контроллере:

public ActionResult Index()
{
    var model = new SomeViewModel
    {
        // TODO: Use a repository
        ActiveCompanies = new[]
        {
            new Company { Id = 1, Name = "Company 1" },
            new Company { Id = 2, Name = "Company 2" },
            new Company { Id = 3, Name = "Company 3" },
        }
    }
    return View(model);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...