如何在MVC4中保留复选框检查状态

时间:2016-10-18 12:09:47

标签: asp.net-mvc asp.net-mvc-4 checkbox

我正在开发MVC4应用程序,我有分页。我在页面中有一个复选框。我正在使用分页,所以我想保留所有字段的值。我使用Models和viewbag来保存文本框和下拉列表的值。我发现带有复选框的困难以保留价值。

例如,dropdownbox如下,

@Html.DropDownListFor(x => x.doc_typeid, Model.doctype_name, "Select", new { @class = "form-control" })

例如,Textbox如下,

       @Html.TextBoxFor(x => x.employeeID, Model.employeeID, new { @id = "employeeID", @placeholder = "Employee ID", @class = "form-control text-input", @maxlength = 20 })

这是我的复选框。

 @for (int i = 0; i < Model.EmploymentType.Count; i++)
 {
         @Html.CheckBoxFor(m => m.EmploymentType[i].isChecked, new { id = "employmentType_" + i })
         @Html.HiddenFor(m => m.EmploymentType[i].checkBoxName)
         @Html.DisplayFor(m => m.EmploymentType[i].checkBoxName)
 }

这里我不确定如何保留复选框选中的值?任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:0)

当请求返回服务器时,复选框本身不会保留。保留它的主要方法是始终确保复选框采用回发到服务器的形式。当表单发回时,从Model.EmploymentType集合中抓取它们。

您必须要小心,执行操作的所有内容实际上都是POST,而不是GET。

答案 1 :(得分:0)

这就是模型的用途。

想象一下,您有一个带有表单,下拉列表和提交表单的按钮的视图。 当您点击按钮时,您会将模型对象返回给控制器。现在您要重新显示表单,此时您需要在返回到视图时传递现有模型。

因此,在回发之前,你的行动可以做到这一点:

Return View("someView");

回发后,您想将其更改为

Return View("someView", model);

模型是您在第一次提交后返回控制器的内容。

这有意义吗?

不要试图过分依赖ViewBag或Session或其他东西。该模型可以很好地涵盖所有这些。