我已经看到这个问题的很多版本,但答案总是变成“你不需要那样做”,并且永远不会有答案。mvc razor中的嵌套编辑模板
我有一个关于产品的属性列表,我想在无序列表中显示带有复选框的特定属性。
在我的模型:
public List<ProductAttribute> ProductAttributes {get;set;}
在我Create.cshtml:
<div Class="ProductAttributes">
@Html.EditorFor(m => m.ProductAttributes, "ProductAttributeSelectorList")
</div>
在我ProductAttributeSelectorList.cshtml:
@model List<Models.DisplayLocationAttribute>
<div class="AttributeSelector">
<ul>
@foreach (var item in Model)
{
<li>
@Html.EditorFor(_ => item, "EditLocationAttributeList")
</li>
}
</ul>
</div>
最后,在我的EditLocationAttributeList.cshtml
@model Models.DisplayLocationAttribute
@Html.HiddenFor(m => m.Id)
@Html.CheckBoxFor(m => m.IsSelected)
<a href="#" alt="@Model.Description" >@Model.Name</a>
这一切都完美地显示在页面上,我可以使用CSS来设计它的样式,但是当提交返回时,我的model.ProductAttributes集合为null。
我知道我可以直接绑定到EditLocationAttributeList,它会显示并返回一个人口model.ProductAttributes如果我用这个:
@Html.EditorFor(m => m.ProductAttributes, "EditLocationAttributeList")
,但现在我没有到无序列表,我想有。我可以像处理项目模板一样对待模板,并将行项目标记嵌入到该模板中,但看起来很臭,并且模板与另一个模板紧密耦合。
任何想法?
由于提前,
塔尔
这样做的窍门,我不清楚发生了什么。所以我建立了一系列的属性,我只是提供一个魔术可以使用的数组呢? – TalMcMahon
是的,或多或少。欲了解更多详情,请阅读Phil Haack的帖子http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx – counsellorben