2012-09-03 77 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

相關問題