当模型具有导航属性时,在mvc razor中获取无效的ID和名称?

时间:2014-03-21 10:30:11

标签: asp.net-mvc-4 razor

这是我在视图中的剃刀代码。

int pmtcount = 0;
if (item.ProjectMaterialTypes != null)
{                                       
@foreach (var x in item.ProjectMaterialTypes)
{
pmtcount = pmtcount + 1;                            
@Html.HiddenFor(model =>model.ProjectTypes[ptcount - 1].ProjectMaterialTypes.ToList()[pmtcount - 1].ProjectMaterialTypeID, new { Value = x.ProjectMaterialTypeID})
@Html.HiddenFor(model => model.ProjectTypes[ptcount - 1].ProjectMaterialTypes.ToList()[pmtcount - 1].MaterialTypes.Name, new { Value = x.MaterialTypes.Name })
<label>@Html.CheckBoxFor(model => model.ProjectTypes[ptcount - 1].ProjectMaterialTypes.ToList()[pmtcount - 1].Status, new { @onclick = "togglesingle('smt-" + x.MaterialTypeID + "')" }) @x.MaterialTypes.Name</label>
}
}

在浏览器上填充Id和名称。 enter image description here

但是通过提交表单在控制器中获取null对象,请告诉我有什么方法可以解决我的问题吗?

1 个答案:

答案 0 :(得分:0)

我只是在模型库中将ICollection更改为List。这样我解决了我的问题。当使用List而不是Entity Framework Model类中的ICollection时,HTML帮助器将生成属性名称。

来自

public virtual ICollection<ProjectMaterialType> ProjectMaterialTypes { get; set; }

更改为

public virtual List<ProjectMaterialType> ProjectMaterialTypes { get; set; }