【问题标题】:ASP.NET: How to make a checkbox always unchecked even post-submitASP.NET:如何使复选框即使在提交后也始终处于未选中状态
【发布时间】:2010-12-03 01:01:23
【问题描述】:

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

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

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

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

ViewData["UserAgreement"] = false;

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

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

【问题讨论】:

    标签: asp.net-mvc checkbox unchecked


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 嗨,Nathan,对不起,我在帖子中犯了一个错误,我已更正。我的意思是分配 false 作为一个值。如果我在提交之前检查了它,我仍然检查了我的复选框。无论我对复选框做什么,都会在提交后保留。这不是我想要的......我希望复选框始终处于未选中状态,无论它在提交之前被选中还是未选中。
      【解决方案3】:

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

      【讨论】:

      • 嗨凯尔,我该怎么做?我以为我的最后一行代码做到了?
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2011-04-14
        • 1970-01-01
        • 1970-01-01
        • 2019-03-06
        • 1970-01-01
        • 1970-01-01
        • 2011-12-22
        相关资源
        最近更新 更多