c# – 如何在DropDownList中使用实体对象导航属性在我的强类型ASP.NET MVC上创建和编辑视图?

我有一个包含产品和系列类型的实体数据模型.每个产品都有一个系列.

我在ASP.NET MVC网站上使用此模型.我想在我的产品控制器的创建和编辑视图上使用Family DropDownLists.

如何在我的强类型ASP.NET MVC创建和编辑视图的DropDownList中使用实体对象导航属性?

以下代码失败…

ProductController的:

// POST: /Product/Create

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Product p)
{
    db.AddToProduct(p);
    db.SaveChanges();
    return RedirectToAction("Index");
}

创建视图:

<p>
    <label for="Family">Family:</label>
    <%= Html.DropDownList("Family", new SelectList((IEnumerable)ViewData["Families"], "Id", "Name"))%>
    <%= Html.ValidationMessage("Family", "*")%>
</p>

我可以在不使用FormCollection的情况下执行此操作吗?我宁愿把它作为强类型产品.

最佳答案 目前,您无法使用外键进行绑定.

您必须手动更新产品与家庭之间的关系.

为此,您应该在“post”操作中添加familyid参数.

并将product.family分配给families.Where(f => f.id = famylyId)

点赞