2013-02-01 32 views
2

我知道ASP.NET不允许禁用控制状态。ASP.NET:为什么控制状态不能被禁用

有谁知道为什么?我搜索了很多,但只看到它不可能,但无法找到“为什么?”

任何想法都会受到欢迎!

P.S.在我的特殊情况下,我需要将很多项目放入不会用于服务器端事件的下拉列表中。而不是仅仅禁用控制状态,我需要编写自己的自定义DropDownList ... :(

+1

这是asp.net webforms的主要缺点,这就是为什么asp.net mvc现在很流行 – Cris

回答

3

控制状态与视图状态分开,以便在不破坏关键功能的情况下禁用视图状态。理论上,控制状态应该包含所有内容所必需的服务器控制才能正常工作。

控制状态,在ASP.NET 2.0版中引入,是 类似,以查看状态,但功能独立的视图状态的一种 页显影剂可以禁用视图状态的页面或者对于性能的单独控制。但是,控制状态不能为 disabl编辑。控制状态设计用于存储控制器必需的 数据(如寻呼控制的页码),该数据必须在 回发中可用,以使控制功能即使在视图状态已禁用 时也能正常工作。

http://msdn.microsoft.com/en-us/library/1whwt1k7(v=vs.100).aspx

但是... ASP.Net确实使这种区别,并禁用视图状态,尽管强制控制状态也确实打破某些服务器控件方面做得很差。

在你的情况下,禁用下拉列表的视图状态应该删除绝大多数状态数据;控制状态通常对于禁用视图状态的下拉菜单很小。我建议在写作之前先尝试一下。

+0

我得到了有关控制状态,但不幸的是,禁用DropDownList的viewstate仍然保留了很多ControlState中的数据...已经是已经第三次当我用自定义控制(代表