ASP.NET 中几个与 Enable 相关的内容

作者:vkvi 来源:ITPOW(原创) 日期:2008-6-12

与 Enable 相关的内容很多,这里介绍这五个:

  • EnableEventValidation:在回发和回调方案中启用事件验证。如果验证事件,则为 true;否则为 false。

    页面事件验证机制可消除未经授权的回发请求和回调带来的风险。如果 enableEventValidation 属性设置为 true,ASP.NET 只允许可在回发请求或回调过程中对控件引发的事件。通过此模型,控件可在呈现期间注册其事件,然后在回发或回调期间验证这些事件。默认情况下,ASP.NET 中的所有事件驱动控件均使用此功能。

    强烈建议不要禁用事件验证。在禁用事件验证之前,应该确保不会构造任何可能对应用程序具有意外影响的回发。

  • EnableSessionState:定义页的会话状态要求。如果启用了会话状态,则为 true;如果可以读取会话状态但不能进行更改,则为 ReadOnly;否则为 false。这些值是不区分大小写的。有关更多信息,请参见 ASP.NET 会话状态可以理解为是否能使用 Session,有三个值:True、False、ReadOnly。ReadOnly 时,写 Session 不会报错,但实际上无法真正写入 Session,该 Session 只限于本页使用。

  • EnableTheming:指示是否在页上使用主题。如果使用主题,则为 true;否则为 false。

  • EnableViewState:指示是否在页请求之间保持视图状态。如果要保持视图状态,则为 true;否则为 false。

  • EnableViewStateMac:指示当页从客户端回发时,ASP.NET 是否应该对页的视图状态运行计算机身份验证检查 (MAC)。如果应该对视图状态运行 MAC 检查,则为 true;否则为 false。

    视图状态 MAC 是隐藏变量的加密版本,当某页被发送到浏览器时,该页的视图状态永久保持到该变量中。当您将此属性设置为 true 时,将检查加密的视图状态以验证它在客户端未被篡改。注意,将此属性设置为 true 会影响性能,因为在页的每次往返行程中,都必须加密和解密变量值。

下表列出了这几个属性在各个地方的出现情况:

web.config 的 pages 节 @ Page 指令 Page 对象 控件
EnableEventValidation
EnableSessionState
EnableTheming
EnableViewState
EnableViewStateMac

默认值

除了 EnableViewStateMac,几个属性在各个地方的默认值均为 true。

EnableViewStateMac 在 web.config 中默认值为 false,在 @ Page 指令中为 true。MSDN 上对 .NET 2.0 的描述中该默认值是 false,但经过测试 2.0 中该默认值仍是 true。

冲突

同一个属性在多个地方均可以设置属性值,那么必然可能会引起冲突。

@ Page 指令 与 web.config 的 pages 节冲突。

  • 如果 @ Page 指令没有指明属性值, web.config 的 pages 节也未指明,则最终结果取决于 @ Page 指令的默认值。
  • 如果 @ Page 指令没有指明属性值,web.config 的 pages 节指明了,则最终结果取决于 web.config 的 pages 节指明的属性值。
  • 如果 @ Page 指令指明了属性值,则最终结果取决于 @ Page 指令的属性值,而不关心 web.config 的属性值。

EnableTheming

EnableTheming 只对 Theme 有效,对 StylesheetTheme 无效。

EnableTheming 是就近原则,即对控件级的设置可以覆盖对页级的设置。

EnableViewState

如果不设置 EnableViewState,我们取其值,可以发现该值就是上面说的“最终结果”。

如果在 Page_Load 中设置 EnableViewState,我们取其值,可以发现该值就是设置的值,但是页面上的最终表现是:如果最终结果和 EnableViewState 设置的值有一方为 false,表现为 false。

控件的 EnableViewState 同 Page 对象的 EnableViewState

相关文章