我无法弄清楚对一个相当简单的问题最好的方法是什么。
我有一个付款视图模型,其中包含可用付款列表和一些基本属性,如标题,内容......
所以在我看来,我使用@using(Html.BeginForm())
并在里面我循环支付并渲染每一个,当然我在控制器帖子中查看的视图模型有空的支付方法列表。
我可以看到,如果我使用for
并打印model.paymentMethods[i].Prop
而不是它可以映射它,但这是正确的方法还是我可以做一些更聪明的事情?
答案 0 :(得分:3)
要使模型绑定器工作,您需要使用索引访问。
@foreach (var item in Model.PaymentMethods)
{
@Html.EditorFor(m => item.Prop);
}
不工作。
您需要使用:
@for (int i = 0; i < m.PaymentMethods.Count(), ++i)
{
@Html.EditorFor(m => m.PaymentMethods[i].Prop);
}
否则,模型绑定器无法将其映射回后期。
答案 1 :(得分:0)
您可以创建付款类型的编辑器模板。在视图中,您可以使用该编辑器模板,如:
@Html.EditorFor(m => m.PaymentMethods)