C# MVC DropDownListFor值不能为Null

C# MVC DropDownListFor值不能为Null,c#,linq,asp.net-mvc-2,C#,Linq,Asp.net Mvc 2,我有密码: <%: Html.DropDownListFor( model => model.CompanyName, new SelectList(ViewData["ActiveCompanies"] as IEnumerable, "Id", "Name")) %> model.CompanyName, 新选择列表(ViewData[“ActiveCompanys”]作为IEnumerable, “身份证”、“姓名”)) %

我有密码:

<%: Html.DropDownListFor(
       model => model.CompanyName, 
       new SelectList(ViewData["ActiveCompanies"] as IEnumerable, 
       "Id", "Name"))
%>
model.CompanyName,
新选择列表(ViewData[“ActiveCompanys”]作为IEnumerable,
“身份证”、“姓名”))
%>
列表中正确地填充了名称等,但是所选的项目名称没有绑定到Model.CompanyName(如果解决方案返回id,那么我可以使用类似

<%: Html.DropDownListFor(
        model => model.CompanyID, 
        new SelectList(ViewData["ActiveCompanies"] as IEnumerable, 
        "Id", "Name"))
 %>
model.CompanyID,
新选择列表(ViewData[“ActiveCompanys”]作为IEnumerable,
“身份证”、“姓名”))
%>

事实上,这对我来说会更好,但如果我能找出数据未绑定的原因,那将非常有用。

html帮助程序总是基于value属性而不是文本绑定数据。也不要使用ViewData和强制转换。我建议您这样做:

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

好的,我使用我的存储库按照您的建议填充ActiveCompanies字段,现在有model.CompanyID,new SelectList(model.ActiveCompanies,“Id”,“Name”))%>但是,当我按submit时,我得到System.NullReferenceException:对象引用未设置为对象的实例。在POST操作中,您需要从存储库中重新填充
ActiveCompanys
属性。正在填充列表,但是,它似乎没有将所选项目绑定到公司。发布操作是什么样子的?[HttpPost]公共操作结果创建(CustomerModel Customer){try{//TODO:如果(ModelState.IsValid)在此处添加插入逻辑{customer.Add(customer);return RedirectToAction(“Index”);}return View();}catch{return View();}
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);
}