将IEnumaration的项目发布到控制器

时间:2014-07-22 11:25:03

标签: c# asp.net-mvc

我无法弄清楚对一个相当简单的问题最好的方法是什么。

我有一个付款视图模型,其中包含可用付款列表和一些基本属性,如标题,内容......

所以在我看来,我使用@using(Html.BeginForm())并在里面我循环支付并渲染每一个,当然我在控制器帖子中查看的视图模型有空的支付方法列表。

我可以看到,如果我使用for并打印model.paymentMethods[i].Prop而不是它可以映射它,但这是正确的方法还是我可以做一些更聪明的事情?

2 个答案:

答案 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)