0

刚开始学习如何开发 ASP.NET 应用程序,我很困惑如何使复选框始终处于未选中状态,即使在表单提交后用户勾选了复选框。该复选框用于确认用户同意条款和条件......并且当表单提交返回一些错误时,我想在屏幕上显示错误消息并保持复选框未选中,无论它是否被勾选。

在我看来,我有以下几点:

<%: Html.CheckBoxFor(m => m.UserAgreement) %>

我已经在我的控制器中尝试了以下两种方法,但它们都不起作用:

ViewData["UserAgreement"] = false;

return View(new MyModel { UserAgreement = false});

任何人都可以帮助如何实现我的需要?谢谢你。

4

4 回答 4

1

这也困扰了我很长时间,即使明确地将模型中的值设置为 false 也不能真正解决这个问题。我发现它也在检查 ModelState 集合中的值。

这可能不是最干净的解决方案,但这最终对我有用:

private ActionResult DisplayView(string viewName, MyModelClass model)
{
    model.AgreeTerms = false;
    ModelState.Remove("AgreeTerms");

    return View(viewName, model);
}
于 2012-10-30T22:13:47.673 回答
0

ModelState.Remove("UserAgreement");在返回视图之前尝试。

于 2012-01-10T06:01:10.047 回答
0

您的值被保存在 ModelState 属性中。为了在发布后重置值。您必须清除 ModelState 属性中的值

于 2010-12-03T01:18:42.010 回答
0

除非您明确告诉它这样做,否则 ASP.NET MVC CheckBox 不会保留其状态。

您在上面发布的代码表明在返回视图时应该检查“UserAgreement”(值为 TRUE),而不是应该取消选中。

除非您在将视图返回给用户之前专门将 UserAgreement 的值设置为“true”,否则该复选框将被取消选中。同样,如果您的操作正在接收一个 UserAgreement 属性设置为“true”的模型,并且您在将其返回到视图之前未将其设置回“false”,则该复选框将保持选中状态。

于 2010-12-03T01:04:07.267 回答