无法在部分视图中绑定DropDownListFor

时间:2016-04-07 03:09:03

标签: c# asp.net-mvc

我有一个局部视图,在其他视图中作为模态加载。

部分视图中的代码

@Html.DropDownListFor(modal => modal.CompanyName, new SelectList(ViewBag.Companies, "CompanyName", "CompanyName"), "Select Company")

行动结果 -

public ActionResult Add()
{
    Contacts_VM vm = new Contacts_VM();
    using (Entities xContext = new Entities())
    {
        ViewBag.Companies = new SelectList(xContext.Companies.ToList(), "CompanyName", "CompanyName");
    }
    return PartialView("~/Views/Contact/_AddEdit.cshtml", vm);
}

使用上面的代码我收到错误消息 -

  

DataBinding:' System.Web.Mvc.SelectListItem'不包含名称为' CompanyName'。

的媒体资源

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

ViewBag.Companies已经是SelectList,因此在局部视图中将其传递给另一个SelectList的构造函数是不正确的。你应该能够通过它:

@Html.DropDownListFor(modal => modal.CompanyName, (SelectList)ViewBag.Companies, "Select Company")

答案 1 :(得分:1)

将视图代码更改为

@Html.DropDownListFor(modal => modal.CompanyName, (SelectList)ViewBag.Companies)

ViewBag属性已经SelectList,所以没有必要从中创建另一个相同的属性(但如果你这样做,则需要new SelectList(ViewBag.Companies, "Value", "Text")