ProductTemplate for productcategory(外键属性)

时间:2013-12-03 23:35:39

标签: c# asp.net asp.net-mvc entity-framework razor

您好我正在尝试为productcategory创建一个editortemplate。

productcategorie类是:

public class ProductCategorie
{
    public int Id { get; set; }
    public int Gewicht { get; set; }
    public string Naam { get; set; }
}

产品类是:

 public class Product
    {
        public int Id { get; set; }
        ...
        public ProductCategorie Categorie { get; set; }    
    }

现在,在我自动创建的编辑视图(脚手架)中,我得到了:

   <div class="form-group">
        @Html.LabelFor(model => model.Categorie, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Categorie)
            @Html.ValidationMessageFor(model => model.Categorie)
        </div>
    </div>

正如您所看到的,我使用了编辑器,因此我可以使用EditorTemplate来实现它!

但它崩溃了,因为它不知道给它一个模型。(它在模型上给出NullReferenceException,模型为null,但我需要它,所以我可以知道什么是SelectListItem必须在选中时为True!)

以下是EditorTemplates

中存在问题的ProductCategorie.cshtml文件
@using Foo.Data
@using Foo.Models
@model ProductCategorie
@{
    var items = new List<SelectListItem>();
    using (var context = new FooDbContext())
    {
        List<ProductCategorie> categorielijst = context.ProductCategorieen.ToList();
        categorielijst.ForEach(x => items.Add(new SelectListItem { Text = x.Naam, Value = x.Id.ToString(), Selected = x.Id == ((ProductCategorie)Model).Id }));
    }
}
@Html.DropDownList("", items)

基本上我问在编辑具有属于外键项的属性的项目时,如何获取当前所选项目的模型或数据。

如果您有任何问题,请随时提出。

(我首先使用EF 6代码,ASP.Net MVC 5)

1 个答案:

答案 0 :(得分:1)

我们在SO聊天中解决了这个问题。

基本上,Model.Categorie属性为null ..因此,为什么EditorTemplate会将null传递给它。

很高兴帮助:)