【发布时间】:2015-04-23 04:40:58
【问题描述】:
我正在尝试将复选框的值从视图传递到控制器。 这是我的代码
在模型中:
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
}
}
在视图中:
@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>
}
我的预期结果是我可以获得所选项目的列表,然后对它们进行一些处理。在方法的参数中。我试过了:
List<Models.ORDER_HEADER_INFO> model
和
IEnumerable<TIS.Models.ORDER_HEADER_INFO> model
但是当我调试 model 仍然为空。
非常感谢!
【问题讨论】:
-
您的
foreach循环正在为复选框生成重复的id属性(无效的html)和name属性(不能绑定到集合)。使用自定义EditorTemplate的for循环为 typeofORDER_HEADER_INFO-for(int i = 0; i < Model.Count; i++) { @Html.CheckBoxFor(m => m[0].checkExport) }检查 html 之前和之后的差异 -
当我使用 for(int i = 0; i
-
制作模型
@model IList<TIS.Models.ORDER_HEADER_INFO>(或List<...>) -
如何替换这个“item.PRODUCT_START_DATE”。抱歉,我是 MVC 4 的新手
-
完全相同的方式 - 在
for循环内 -@Html.DisplayFor(m => m[0].PRODUCT_START_DATE)(BTW 可怕的命名 - 遵循约定并使用 ProductStartDate)。但你也有其他问题。您的模型有一个名为MODEL的属性,并且您还在方法中将参数命名为model,因此绑定将失败(您需要更改其中一个)