在MVC中显示公共虚拟属性

时间:2016-05-18 11:38:28

标签: c# asp.net-mvc

您好我有以下型号:

public class ActiveProducts
{
    public int ID { get; set; }
    public virtual Product Product { get; set; }
}

对于数据上下文我有:

public DbSet<ActiveProduct> ActiveProducts { get; set; }

我想创建一个控制器和视图来执行CRUD操作

我如何能够为创建和编辑生成视图,以便我有一个产品下拉列表?

我使用了使用模型创建控制器的标准方法,使用CRUD操作并且它没有为create创建任何内容。

1 个答案:

答案 0 :(得分:1)

好的,由于Product_ID包含Products表的主键值,因此这应该在您的控制器中有效:

public ActionResult Create()
{
    ViewBag.Product_ID = new SelectList(db.Product, "ID", "Product");
}

[HttpPost]
public ActionResult Create([Bind(Include = "ID, Product_ID" /*etc*/)] ActiveProducts activeProducts)
{
    ViewBag.Product_ID = new SelectList(db.Product, "ID", "Product", activeProducts.Product_ID);
}

然后在你的创建视图中:

<div class="form-group">
    @Html.LabelFor(model => model.Product_ID, "Product:", htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownList("Product_ID", null, "-- Select Product --", htmlAttributes: new { @class = "form-control" })
        @Html.ValidationMessageFor(model => model.Product_ID, "", new { @class = "text-danger" })
    </div>
</div>