我有一个MVC视图,可将多个模型发布回控制器。我要求添加允许用户从同一表单添加X个“Infractions”的功能。我可以将我想要做的事情与将“Infractions”对象的IEnumerable发布回控制器进行比较。如果有某种方法可以做到这一点,那就太棒了:
[HttpPost]
public ActionResult Create(IEnumerable<Infractions> infractions)
然后我会迭代IEnumerable并添加违规行为。
有什么建议吗?
答案 0 :(得分:2)
这绝对是可能的。有关此问题,请参阅Phil Haack's post。
诀窍是以正确的格式呈现初始get属性名称,以便模型绑定器将其识别为列表/数组。
例如:
<input type='text' name='[0].Property1OnInfractions' />
<input type='text' name='[0].Property2OnInfractions' />
<input type='text' name='[1].Property1OnInfractions' />
<input type='text' name='[1].Property2OnInfractions' />
在您的情况下,您必须将您的IEnumerable转换为IList以使以下工作:
@for(int i = 0; i < Model.Count(); i++)
{
@Html.TextBoxFor(m => m[i].Property1OnInfractions)
@Html.TextBoxFor(m => m[i].Property2OnInfractions)
}
动作签名应如下所示
[HttpPost]
public ActionResult Create(List<Infractions> infractions)