刚开始学习如何开发ASP.NET应用程序,我很困惑如何在表单提交时,如果用户勾选复选框,则始终取消选中复选框。该复选框用于确认用户同意条款和条件...当表单提交返回一些错误时,我想在屏幕上显示错误消息并保持复选框未选中,无论是否勾选。
在我看来,我有以下内容:
<%: Html.CheckBoxFor(m => m.UserAgreement) %>
我在我的控制器中尝试了以下两种方法,但没有一种方法有效:
ViewData["UserAgreement"] = false;
return View(new MyModel { UserAgreement = false});
任何人都可以帮忙解决如何实现我的需求?谢谢。
答案 0 :(得分:1)
这也困扰了我很长一段时间,甚至明确地将我的模型中的值设置为false并没有真正解决这个问题。我发现它还检查了ModelState集合中的值。
这可能不是最干净的解决方案,但这最终对我有用:
private ActionResult DisplayView(string viewName, MyModelClass model)
{
model.AgreeTerms = false;
ModelState.Remove("AgreeTerms");
return View(viewName, model);
}
答案 1 :(得分:0)
除非您明确告知它,否则ASP.NET MVC CheckBox不会保留其状态。
您在上面发布的代码表示在返回视图时应检查“UserAgreement”(值为TRUE),而不是取消选中它。
除非您在将视图返回给用户之前专门将UserAgreement的值设置为“true”,否则将取消选中该复选框。同样,如果您的操作正在接收UserAgreement属性设置为“true”的模型,并且在将其返回到视图之前未将其设置回“false”,则复选框将保持选中状态。
答案 2 :(得分:0)
您的值正保存在ModelState属性中。为了在帖子后重置值。您必须清除ModelState属性中的值
答案 3 :(得分:0)
在返回视图之前尝试ModelState.Remove("UserAgreement");
。