我正在开发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)
}
这里我不确定如何保留复选框选中的值?任何帮助,将不胜感激。
答案 0 :(得分:0)
当请求返回服务器时,复选框本身不会保留。保留它的主要方法是始终确保复选框采用回发到服务器的形式。当表单发回时,从Model.EmploymentType
集合中抓取它们。
您必须要小心,执行操作的所有内容实际上都是POST,而不是GET。
答案 1 :(得分:0)
这就是模型的用途。
想象一下,您有一个带有表单,下拉列表和提交表单的按钮的视图。 当您点击按钮时,您会将模型对象返回给控制器。现在您要重新显示表单,此时您需要在返回到视图时传递现有模型。
因此,在回发之前,你的行动可以做到这一点:
Return View("someView");
回发后,您想将其更改为
Return View("someView", model);
模型是您在第一次提交后返回控制器的内容。
这有意义吗?
不要试图过分依赖ViewBag或Session或其他东西。该模型可以很好地涵盖所有这些。