【问题标题】:Html.Checkbox does not preserve its state in ASP.net MVCHtml.Checkbox 不在 ASP.net MVC 中保留其状态
【发布时间】:2010-10-06 07:03:09
【问题描述】:

使用Html.Checkbox 扩展方法创建的复选框有这个烦人的问题。显然,在回发的情况下不会保存复选框的状态(由于表单验证错误)。深入研究 MVC 代码本身 (System.Web.Mvc.Html.InputExtensions) 我发现“已检查”属性是通过调用 htmlHelper.EvalBoolean(name) 确定的。

此方法查找 ViewData 本身的键(在 name 参数中指定)。问题是复选框的值实际上位于ModelState中。打电话 htmlHelper.GetModelStateValue(name, typeof(bool)) 会返回预期的结果。

这是复选框实现中的缺陷吗?

【问题讨论】:

    标签: asp.net-mvc checkbox


    【解决方案1】:

    我在这里发布了另一个解决方法:

    How to maintain state of Html.CheckBox() in ASP.NET MVC

    【讨论】:

      【解决方案2】:

      此问题已发布在 codeplex 上,并将在 MVC RTM 中得到修复/支持。同时,这是一个不错的workaround

      【讨论】:

        【解决方案3】:

        请记住,MVC 背后的理念是让网络回到几年前的状态。如果不使用 AJAX 之类的东西,您不应该在页面上进行回发。因此,您习惯于维护自身状态的大多数控件将不再起作用。

        您有没有想过使用 AJAX 来尝试解决这个问题?这样你就可以拥有你的 postbakc 并保持控件的状态?

        【讨论】:

        • 客户端验证“很高兴”,但并不令人满意。最后大多数网站需要在服务器端进行验证
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多