日期:2014-05-19  浏览次数:20477 次

关于EnableViewState的困惑??????
IE7.0和IE6.0比有一点不爽的地方,就是当打开一个网页之后,就没有了 "转到 "按钮,只有了 "刷新 "按钮.这样刷新,aspx只能重复提交,如果想把原页面重载而不是提交的话,就只有点一下地址栏再按一下回车.

言归正传.   我们知道要设计高效率的网页必须关掉ViewState,   因为如果打开的话,会使网络数据量至少增大一倍.对于大数据量的网页,就我来看是不可容忍的.可是我就不明白关掉以后对编程的逻辑会有什么样的负作用.就我所知.ViewState并没有被完全关闭,有一少部分关键数据还是在其中被保留.但已经大大降低了网络的占用.

请有经验的朋友谈一下EnableViewState被关掉以后编程的思路会有何不同?

------解决方案--------------------
关掉以后,你就要自己做状态管理。例如某一个TextBox的ForColor属性修改之后,你的代码要负责比较此属性是否改变,如果改变,你的代码负责保存它。然后,当页面再次加载的时候,在“页面生命周期”所说的LoadPostedData过程之前,你的框架的代码要抢先把把这一个TextBox的ForColor属性恢复。对于Text属性,你的框架在恢复属性值之后。一个简单的TextBox有几十个属性需要保持,页面上肯定有多个TextBox,还有更多其它类型的控件,例如GridView、TreeView,你都自己去写状态管理代码吧。

否则,丝毫也别指望你的页面有状态。

web编程对于很多初学者,还只是html+css+javascript的静态概念,对交互不太关心。他们在“范例”程序中看到的只是简单的信息查询程序,主要是在屏幕上打印一个静态图片,还考虑不到状态管理对于交互式程序意味着什么。
------解决方案--------------------
我所说的“在屏幕上打印一个静态图片”不是指image,是指其中没有复杂的事件。

举个例子,学生在学校能学到的编程几乎全都是在屏幕上打印一些文字、图形,来展示一个查询结果,来证明程序运行正确。然而,一个简单的“windows记事本程序”(notpad.exe程序)展现的就是十足的交互操作界面,在一个窗口中捕获键盘、鼠标的操作,并且展现动态装载的新内容,各种畅销的应用程序则更加动态。
------解决方案--------------------
如果不用考虑状态管理,那么显然,你的程序就要动不动就打开新的窗口,而不是在一个页面内部根据成百上千次回发操作而动态改变的那种交互界面程序。
------解决方案--------------------
不知道你有没有将客户端生成的viewState进行解码,查看里面的内容呢

如果看了你就知道它到底做了些什么事,然后你就会很好的使用

over