JCo*_*ine 5 c# forms asp.net asp.net-mvc-3
我正在MVC中构建一个站点,我传递给我的View的View Model包含一个自定义对象,该对象又包含一个IEnumarable自定义对象列表.
这个想法是剃刀将动态生成IEnumerable的表单,可以是任意数量的对象.
@foreach (var data in Model.Kpi.Values)
{
<div class="editor-label">
@Html.Label(data.Field.Name);
</div>
<div class="editor-field">
@Html.EditorFor(model => data.Value)
@Html.ValidationMessageFor(model => data.Value)
</div>
}
Run Code Online (Sandbox Code Playgroud)
表单显示完美,包括数据注释,但IEnumerable在控制器post函数中为null.
[HttpPost]
public virtual ActionResult Create(KpiCreateViewModel vm)
{
return this.RedirectToAction(MVC.Kpi.Index());
}
Run Code Online (Sandbox Code Playgroud)
我在return语句上加了一个断点,并检查了vm变量的内容.
任何人都可以建议一种方法来检索表单数据?
提前致谢
这是因为该EditorFor方法没有足够的信息来生成DefaultModelBinder您回发时可以使用的名称。查看 HTML 中生成的名称属性。该名称是根据您传入的表达式生成的,但您不必在循环中提供属性的完整路径。
将其更改为索引循环,它应该可以工作。
@for(var i=0; i<Model.Kpi.Values.Count(); i++)
{
<div class="editor-label">
@Html.Label(model.Kpi.Values[i].Field.Name);
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Kpi.Values[i].Value)
@Html.ValidationMessageFor(model => model.Kpi.Values[i].Value)
</div>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5766 次 |
| 最近记录: |