我正在学习mvc,尝试填充复选框列表并在提交按钮上获取复选框列表的所有选定值,但发布后在控制器中的按钮提交上却为空.view和controller的代码如下。 httpget部分运行正常,并根据需要显示所有复选框。 但是提交问题发生后
查看:
SearchTerms
控制器:
@model IEnumerable<MVCExtra.Models.paymentmethod>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
@using(Html.BeginForm("Index", "Input", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
foreach (var item in Model)
{
@Html.HiddenFor(x => item.Id);
@Html.HiddenFor(x => item.Name);
@Html.CheckBoxFor(x=>item.isselected);
@Html.DisplayFor(x => item.Name);
}
<input type="submit" value="submit"/>
}
</body>
</html>
答案 0 :(得分:0)
您需要使用索引器而不是foreach循环,模型才能正确发回
for(int i=0; i < Model.Count(); i++)
{
@Html.HiddenFor(x => Model[i].Id);
@Html.HiddenFor(x => Model[i].Name);
@Html.CheckBoxFor(x=>Model[i].isselected);
@Html.DisplayFor(x => Model[i].Name);
}
编辑:忘记了,您需要将模型转换为列表,而不是IEnumerable
答案 1 :(得分:0)
您可以使用foreach循环,但是需要将其放置在beginform部分之外,否则每次循环时,它将用新集合替换最后一组数据。
还请阅读以下内容(使用CheckBoxFor的正确方法):)-Proper usage of .net MVC Html.CheckBoxFor