观察国家是一个痛苦...在那里,我说过! 观察国家最痛苦的就是人们经常滥用它, 将它保留在一页的每一个控制上, 而事实上你只需要它来控制它, 而这种控制真的需要坚持到下一页。 戴夫·里德 ASP.NET团队的一位开发者 写了一篇真正史诗般的文章 `真正理解观察国 '在你读下一篇文章之前, 你真的应该去读一下,首先
回来?
好了,现在你明白,你应该只使用 ViewState 来控制那些真正需要它的控制。但有一个问题...你真正想做的是 整个页面关闭 ViewState 然后重新打开它 需要它的控制器, 我也有好消息...当ASP.NET4.0出现时! 允许你这样做的ASP.NET控制系统 的神奇小财产叫做View StateMode。 (顺便提一句,这就是这个。 戴夫的 下面的样本与他毫不羞耻地撕裂:-)
简言之,“View StateMode”有三个可能的值, 已启用, 残疾残疾人残疾人 和 继承遗产这在他们的职能上是显而易见的...已启用 为此项控制( 或任何设定为“ 继承” 或未设定任何子控” 的子控) , 转而打开保存视图状态( View State) , @ info: whatsthis 残疾残疾人残疾人 又关了它, 继承遗产 说「不管我父母想做什么,
以下是一个非常简单的例子,
<窗体 id= “ forst1” runat= “ server” 窗体>
<脚本 runat = “ 服务器”>
在 Load( 晚上) { { { 无效
如果(! 是后背) {
标签1. Text = 标签2. Text = "[“; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
}
基数 : OnLoad(e) ;
}
</说明>
<asp: PlaceHolder ID= “ PlaceHolder1” 运行数= “ 服务器” 查看状态Mode= “ 残疾 ”>
残疾: <注意 : 标签 ID= “ 标签 1 ” 运行 = “ 服务器 ” 文本= ”[宣布价值]"/><b b b />
<问号: PlaceHolder ID= “ PlaceHolder2” 运行= “ 服务器” 查看状态Mode = “ 启用 ”>
已启用 : <提醒: 标签 ID= “ label2 ” runat = “ 服务器 ” 文本= ”[宣布价值]"/>
<草 草: PlaceHolder>
<草 草: PlaceHolder>
<hr />
<ASp: 按键 ID= “ 按钮 1 ” runat= “ 服务器 ” 文本= “ 后退 ” />
您可以在此样本中看到, 我们为 PlaceHolder1 控制禁用查看状态, 儿童标签1 继承了此属性( 继承者默认) , 因此没有保存任何视图状态 在 PlaceHolder2 中, 我们设置 View StateMode 为“ Enabled ” , 这导致标签2 继承了此属性, 因此保存了 View State 在首页加载中, 我们为输出文本设定了两个标签 。 [动态价值]
这一切的效果是,当Page首次加载时,你可以看到以下标签:
残疾: [动态价值]
已启用 : [动态价值]
但是,做一个PostBack,你可以看到:
残疾: [宣布价值]
已启用 : [动态价值]
正如你现在所期望的那样, 第一个标签没有保留我们放入View State的价值第二个标签就有了!
最酷的是,
<頁面語言 = “ C # ” 自动視覺Wireup = “ true” Dufault. aspx. cs ” Inherits = “WebApplication 1 ”默认“ 查看状态模式” = “ 残疾” %>
记住, 在 WebForms Page 中, 在 WebForms Page 中, 这只是另一个控件... 它作为页面中所有其他控件的父控件。 这意味着任何控件都不会保存 ViewState 除非您设置了要启用的视图状态模式 因为控制或控制会进一步提升它的控制等级(因此,对主页的内容PlaceHolders将有很大的用处...)。
跟你说了很简单!
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.