我有一个列表,我想在剃刀视图中进行分组和编辑。
如果 POCO 是:
public class FooBar {
public string GroupName {get;set;}
public string SomeValue {get;set;}
// etc.
}
以及视图中的模型:
@model IEnumerable<FooBar>
Post 动作是这样的:
[HttpPost]
public ActionResult FooBarPost(IEnumerable<FooBar> model)
通常要编辑列表,我会在我的视图中使用以下语法:
@Html.EditorForModel()
效果很好,它创建了可爱的小输入,例如:
<input id="[0].SomeValue" />
并且回邮是完美的。
现在,如果我想将我的观点改为不那么令人敬畏的:
<fieldset>
<legend>Legendary</legend>
@foreach (var group in Model.GroupBy(x => x.GroupName))
{
<h3>@group.Key</h3>
@Html.EditorFor(x => group)
}
</fieldset>
然后当我发布我的列表时返回为空?
我记得有一个技巧可以解决这个问题,我只是不记得是什么?
谢谢。
编辑:
添加[Bind(Prefix="group")]
到我的操作中,现在只带回一个输入值。
我注意到生成的 HTML 看起来像这样(都在同一页面上):
第一组:
<input id="group_0__SomeValue" name="group[0].SomeValues" type="hidden" value="bla">
<input id="group_1__SomeValue" name="group[1].SomeValues" type="hidden" value="bla">
下一组:
<input id="group_0__SomeValue" name="group[0].SomeValues" type="hidden" value="bla">