MVC DropDownListFor值不能为空

Man*_*rin 2 c# linq asp.net-mvc-2

我有代码:

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

正在使用名称等填充列表,但所选项目名称未绑定到Model.CompanyName(如果解决方案返回id,那么我可以使用类似的东西

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

事实上,这对我的目的来说会更好,但如果我能找出数据未被约束的原因,那将会非常有用.

Dar*_*rov 5

html助手总是根据value属性绑定数据,而不是文本.也不要使用ViewData和强制转换.我建议你这样做:

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

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);
}
Run Code Online (Sandbox Code Playgroud)