2012-09-03 54 views
0

我有下一个视图:如何在ASP.Net MVC中将对象列表传递给[HTTPPost]控制器参数?

@model IEnumerable<L5ERP.Model.BLL.BusinessObjects.MTR_MonthlyTransfer> 
@using (Html.BeginForm("ExpenseMonthlyTransferProcessing", "BudgetTransfer", Model.ToList())){ 
<table class ="divTable"> 
<tr> 
    <th>Transferir</th> 

    <th> 
     Clave 
    </th> 

    <th> 
     Monto 
    </th> 

</tr> 
@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.CheckBoxFor(x => item.MTR_Bool, new { @class = "checkMTR", @checked = "checked" }) 

    </td> 
    <td> 
     @Html.TextBoxFor(x => item.MTR_Key, new {@class = "longInput" }) 
    </td> 
    <td> 
     @String.Format("{0:F}", item.MTR_Amount) 
    </td> 
</tr> 
} 
</table> 
} 

和我的控制器这样

[HttpPost] 
    public ActionResult ExpenseMonthlyTransferProcessing(List<MTR_MonthlyTransfer> lstMtr) 
    { return View(lstMTR); } 

但是当我做了我的帖子列表是空,我怎样才能通过提交按钮发送我的名单?

回答

1

您应该@model改变到一个数组(L5ERP.Model.BLL.BusinessObjects.MTR_MonthlyTransfer[])或别的东西,它实现IList<>

@model L5ERP.Model.BLL.BusinessObjects.MTR_MonthlyTransfer[] 

@for (var i = 0; i < Model.Length; i ++) { 
<tr> 
    <td> 
     @Html.CheckBoxFor(x => Model[i].MTR_Bool, new { @class = "checkMTR", @checked = "checked" }) 
    </td> 
    <td> 
     @Html.TextBoxFor(x => Model[i].MTR_Key, new {@class = "longInput" }) 
    </td> 
    <td> 
     @String.Format("{0:F}", item.MTR_Amount) 
    </td> 
</tr> 
+0

Ed指的是您需要为模型绑定器的名称建立索引。当他的示例呈现MTR_Key文本框时,它看起来像这使模型绑定者知道数组中每个输入属于哪个元素。或者,将它作为json对象数组提交也应该有效。 –

0

收到的FormCollection和解析的项目在其手动

使用F12查看在您的导航仪后,看它是否正在发送您预期的内容。

+0

我填写我的表有FOR而不是一个foreach 但我在我的MI型号使用.ToList ,现在我可以访问我的收藏索引。 这里是我的视图的代码: <表类= “divTable”> Transferir 来福 蒙托 @for(INT I = 0 ; i ​​ @ Html.TextBoxFor(X => Model.ToList()[I] .MTR_Key) } 这工作;)! – Lio

相关问题