这是我在视图中的剃刀代码。
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和名称。
但是通过提交表单在控制器中获取null对象,请告诉我有什么方法可以解决我的问题吗?
答案 0 :(得分:0)
我只是在模型库中将ICollection更改为List。这样我解决了我的问题。当使用List而不是Entity Framework Model类中的ICollection时,HTML帮助器将生成属性名称。
来自
public virtual ICollection<ProjectMaterialType> ProjectMaterialTypes { get; set; }
更改为
public virtual List<ProjectMaterialType> ProjectMaterialTypes { get; set; }