【问题标题】:ASP.NET: Why control state cannot be disabledASP.NET:为什么不能禁用控件状态
【发布时间】:2013-01-16 09:50:10
【问题描述】:

我知道 ASP.NET 不允许禁用控制状态。

有人知道为什么吗?我用谷歌搜索了很多,但只看到这是不可能的,但找不到“为什么?”

欢迎对此提出任何想法!

附:在我的特殊情况下,我需要将很多项目放入一个不会用于服务器端事件的下拉列表中。我需要编写自己的自定义 DropDownList... :(

【问题讨论】:

  • 这是asp.net webforms的主要缺点,这就是为什么asp.net mvc现在越来越流行

标签: asp.net viewstate control-state


【解决方案1】:

控制状态与视图状态分离,因此可以在不破坏关键功能的情况下禁用视图状态。理论上,控件状态应该包含服务器控件正常运行所必需的所有内容。

在 ASP.NET 2.0 版中引入的控制状态是 类似于视图状态,但在功能上独立于视图状态。一种 页面开发人员可以禁用页面的视图状态或 个人控制性能。但是,控制状态不能 禁用。控件状态是为存储控件的本质而设计的 必须可用的数据(例如寻呼机控件的页码) 回发以使控件即使在视图状态具有 被禁用了。

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

但是……ASP.Net 在区分这一点方面做得很差,尽管强制控制状态,禁用视图状态确实会破坏某些服务器控制。

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

【讨论】:

  • 我了解了控件状态,但不幸的是,禁用 DropDownList 的视图状态仍然会在 ControlState 中保留大量数据......这已经是我第三次用自定义控件替换它们(呈现 标签)。
  • @Budda 这很奇怪。我刚刚打开了我的一个页面(.Net 4.5),禁用了视图状态和 3 个包含大约 100 个项目的下拉列表。视图状态字符串少于 20 个字符。也许还有其他影响它?
猜你喜欢
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 2012-10-11
  • 2020-10-02
  • 2021-08-06
  • 2011-02-21
  • 2010-09-28
  • 1970-01-01
相关资源
最近更新 更多