Asp.net mvc 将复选框值从视图传递到控制器MVC 4时出现Null错误
我试图将复选框的值从视图传递到控制器。 这是我的密码 在模型中:Asp.net mvc 将复选框值从视图传递到控制器MVC 4时出现Null错误,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我试图将复选框的值从视图传递到控制器。 这是我的密码 在模型中: public partial class ORDER_HEADER_INFO { //many other fields public bool checkExport { get; set; } } 在控制器中: [HttpPost] public void ExportCSV(List<Models.ORDER_HEADER_INFO> model) { foreach (Mo
public partial class ORDER_HEADER_INFO
{
//many other fields
public bool checkExport { get; set; }
}
在控制器中:
[HttpPost]
public void ExportCSV(List<Models.ORDER_HEADER_INFO> model) {
foreach (Models.ORDER_HEADER_INFO item in model) {
if (item.checkExport) {
//Do somethings
}
}
[HttpPost]
公共void导出CSV(列表模型){
foreach(模型中的Models.ORDER\u HEADER\u信息项){
如果(项目检查导出){
//做事
}
}
鉴于:
@model IEnumerable<TIS.Models.ORDER_HEADER_INFO>
@using (Html.BeginForm("ExportCSV", "MKP_004", FormMethod.Post)){
<input type="submit" value="ExportCSV" />
@foreach (var item in Model)
{DateTime deadline = new DateTime(2015, 04, 12);
var className = (item.PRODUCT_START_DATE >= deadline) ? "selected" : null;
<tr class="@className">
<td>
@Html.ActionLink(item.ORDER_NO, "MKP_003", "MKP_003", new { id = item.ORDER_NO }, new { })
</td>
<td>
@Html.DisplayFor(modelItem => item.MODEL)
</td>
<td>
@Html.DisplayFor(modelItem => item.PJNO)
</td>
<td>
@Html.DisplayFor(modelItem => item.DELIVERY_DESTINATION)
</td>
<td>
@Html.DisplayFor(modelItem => item.PRODUCT_START_DATE)
</td>
<td>
@Html.DisplayFor(modelItem => item.FINISH_FLAG)
</td>
<td>
@Html.CheckBoxFor(modelItem => item.checkExport)
</td>
</tr>
}
</table>
}
@model IEnumerable
@使用(Html.BeginForm(“ExportCSV”、“MKP_004”、FormMethod.Post)){
@foreach(模型中的var项目)
{DateTime截止日期=新的日期时间(2015年4月12日);
var className=(item.PRODUCT\u START\u DATE>=截止日期)?“已选”:空;
@ActionLink(item.ORDER_NO,“MKP_003”,“MKP_003”,new{id=item.ORDER_NO},new{})
@DisplayFor(modeleItem=>item.MODEL)
@DisplayFor(modeleItem=>item.PJNO)
@DisplayFor(modelItem=>item.DELIVERY\u目的地)
@DisplayFor(modelItem=>item.PRODUCT\u开始日期)
@DisplayFor(modelItem=>item.FINISH_标志)
@CheckBoxFor(modelItem=>item.checkExport)
}
}
我的预期结果是,我可以获得所选项目的列表,然后对它们进行一些处理。在方法的参数中。我尝试过:
List<Models.ORDER_HEADER_INFO> model
列表模型
及
IEnumerable模型
但是当我调试模型时,仍然为空
非常感谢!正如其他人所提到的,您只需将
foreach
重写为for
循环,以便将索引应用于HTML字段的name
属性,以便模型绑定器完成其工作。将foreach
更改为:
@for (int i = 0; i < Model.Count(); i++)
{DateTime deadline = new DateTime(2015, 04, 12);
var className = (Model[i].PRODUCT_START_DATE >= deadline) ? "selected" : null;
<tr class="@className">
<td>
@Html.ActionLink(Model[i].ORDER_NO, "MKP_003", "MKP_003", new { id = Model[i].ORDER_NO }, new { })
</td>
<td>
@Html.DisplayFor(m => m[i].Model)
</td>
<td>
@Html.DisplayFor(m => m[i].PJNO)
</td>
<td>
@Html.DisplayFor(m => m[i].DELIVERY_DESTINATION)
</td>
<td>
@Html.DisplayFor(m => m[i].PRODUCT_START_DATE)
</td>
<td>
@Html.DisplayFor(m => m[i].FINISH_FLAG)
</td>
<td>
@Html.CheckBoxFor(m => m[i].checkExport)
</td>
</tr>
}
for(int i=0;i您的
foreach
循环正在为复选框生成重复的id
属性(无效html)和name
属性(无法绑定到集合)。使用for
for自定义编辑器或模板的循环for typeofORDER\u HEADER\u INFO
-for(int i=0;im[0].checkExport)}
检查之前和之后的Html以查看差异当我使用for(int i=0;i@Model IList
(或List
)如何替换此“item.PRODUCT\u START\u DATE”“.对不起,我对MVC 4完全是新手,完全是以同样的方式-在for
循环中-@Html.DisplayFor(m=>m[0].PRODUCT\u START\u DATE)
(可怕的命名BTW-遵循约定并使用ProductStartDate)。但您还有其他问题。您的模型有一个名为model
的属性,并且您还在方法model
中命名了参数,因此绑定将失败(您需要更改其中一个)
@for (int i = 0; i < Model.Count(); i++)
{DateTime deadline = new DateTime(2015, 04, 12);
var className = (Model[i].PRODUCT_START_DATE >= deadline) ? "selected" : null;
<tr class="@className">
<td>
@Html.ActionLink(Model[i].ORDER_NO, "MKP_003", "MKP_003", new { id = Model[i].ORDER_NO }, new { })
</td>
<td>
@Html.DisplayFor(m => m[i].Model)
</td>
<td>
@Html.DisplayFor(m => m[i].PJNO)
</td>
<td>
@Html.DisplayFor(m => m[i].DELIVERY_DESTINATION)
</td>
<td>
@Html.DisplayFor(m => m[i].PRODUCT_START_DATE)
</td>
<td>
@Html.DisplayFor(m => m[i].FINISH_FLAG)
</td>
<td>
@Html.CheckBoxFor(m => m[i].checkExport)
</td>
</tr>
}