Html.Checkbox不保留其在ASP.net MVC中的状态

时间:2009-02-08 20:31:17

标签: asp.net-mvc checkbox

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

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

这是复选框实施中的一个缺陷吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我在这里发布了另一个工作区:

  

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

答案 2 :(得分:0)

请记住,MVC背后的思想是让网络恢复到几年前的状态。如果不使用像AJAX这样的东西,你不应该在页面上有回发。因此,您用于维护自己状态的大多数控件将不再使用。

您是否考虑过使用AJAX来尝试解决此问题?这样你可以拥有postbakc并保持控件的状态吗?