Asp.net mvc 在ASP.NETMVC中,如何将对象列表传递给[HTTPPost]控制器参数?

Asp.net mvc 在ASP.NETMVC中,如何将对象列表传递给[HTTPPost]控制器参数?,asp.net-mvc,list,submit,http-post,asp.net-mvc-controller,Asp.net Mvc,List,Submit,Http Post,Asp.net Mvc Controller,我有另一种看法: @model IEnumerable<L5ERP.Model.BLL.BusinessObjects.MTR_MonthlyTransfer> @using (Html.BeginForm("ExpenseMonthlyTransferProcessing", "BudgetTransfer", Model.ToList())){ <table class ="divTable"> <tr> <th>Transferir&

我有另一种看法:

@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> 
}
@model IEnumerable
@使用(Html.BeginForm(“ExpenseMonthlyTransferProcessing”,“BudgetTransfer”,Model.ToList())){
转移
克拉夫
蒙托
@foreach(模型中的var项目){
@CheckBoxFor(x=>item.MTR\u Bool,新的{@class=“checkMTR”,@checked=“checked”})
@TextBoxFor(x=>item.MTR_键,新的{@class=“longInput”})
@String.Format(“{0:F}”,item.MTR\u Amount)
} 
}
我的控制器是这样的

[HttpPost]
    public ActionResult ExpenseMonthlyTransferProcessing(List<MTR_MonthlyTransfer> lstMtr)
    { return View(lstMTR); }
[HttpPost]
公共行动结果费用月转移处理(列表lstMtr)
{返回视图(lstMTR);}

但是当我发布我的列表为空时,如何通过提交按钮发送我的列表

接收FormCollection并手动解析其中的项


使用F12检查导航器中的帖子,查看它是否发送了您期望的内容。

您应该将
@model
更改为数组(
L5ERP.model.BLL.BusinessObjects.MTR\u MonthlyTransfer[]
)或实现
IList
)的其他内容:

@model L5ERP.model.BLL.BusinessObjects.MTR\u月转移[]
@对于(变量i=0;iModel[i].MTR\u Bool,新{@class=“checkMTR”,@checked=“checked”})
@TextBoxFor(x=>Model[i].MTR_键,新的{@class=“longInput”})
@String.Format(“{0:F}”,item.MTR\u Amount)

我用FOR代替了FOREACH来填充我的表,但是我在mi模型中使用了.ToList,现在我可以访问我集合的de indexs。下面是我的视图代码:Transferir Clave Monto@FOR(int I=0;IModel.ToList()[I].MTR_Key)}这是有效的;)!Ed指的是您需要为modelbinder的名称编制索引的事实。当他的示例呈现MTR_Key文本框时,它会使modelbinder知道每个输入属于数组中的哪个元素。或者,将其作为json对象数组提交也可以。
@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>