具有Ienumerable模型的Asp.net MVC视图在提交时返回null

时间:2018-06-20 10:34:22

标签: c# asp.net asp.net-mvc

我正在学习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>

2 个答案:

答案 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