0

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

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

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

4

3 回答 3

1

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

如何在 ASP.NET MVC 中维护 Html.CheckBox() 的状态

于 2009-02-22T17:46:34.720 回答
1

此问题已在codeplex上发布,并将在 MVC RTM 中得到修复/支持。同时,这是一个很好的解决方法

于 2009-02-11T21:34:47.517 回答
0

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

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

于 2009-02-09T08:47:56.950 回答