[英].NET MVC Razor Dynamic Form Generation
我正在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>
}
表单显示完美,包括数据注释,但IEnumerable在控制器post函数中为null。
[HttpPost]
public virtual ActionResult Create(KpiCreateViewModel vm)
{
return this.RedirectToAction(MVC.Kpi.Index());
}
我在return语句上加了一个断点,并检查了vm变量的内容。
任何人都可以建议一种方法来检索表单数据?
提前致谢
这是因为EditorFor
方法没有足够的信息来生成一个名称,当您回发时, DefaultModelBinder
可以使用该名称。 查看HTML中生成的name属性。 该名称是从您传入的表达式生成的,但您不必在循环中使用该属性的完整路径。
将它更改为索引循环,它应该工作。
@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>
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.