EnableViewState与EnableViewStateMac
EnableViewState
获取或设置一个值,该值指示当前页请求结束时该页是否保持其视图状态以及它包含的任何服务器控件的视图状态。
如果该页保持其视图状态,则为 true;否则为 false。默认为 true。
即使 EnableViewState 为 false,ASP.NET 用于检测回发的页中也可能呈现隐藏的视图状态字段。
EnableViewStateMac
获取或设置一个值,该值指示当页从客户端回发时,ASP.NET 是否应对页的视图状态运行消息验证检查 (MAC)。
如果应对视图状态进行 MAC 检查和编码,则为 true;否则为 false。默认为 false
在大多数情况下不要在代码中设置该属性。使用 .aspx 文件的 @ Page 指令将 EnableViewStateMac 属性设置为 true。请求该页时,该属性将由动态生成的类进行设置。
视图状态 MAC 是隐藏变量的编码版本,当向浏览器发送页的视图状态时,页的视图状态将持久保存到该隐藏变量中。当 EnableViewStateMac 属性设置为 true 时,将检查编码和加密的视图状态以验证该视图状态在客户端上是否未被篡改。
另在使用Server.Transfer("","")时可能出现视图状态更改的bug
关于EnableViewState禁用与使用心得
每个web控件都有个ViewState值,如果一个页面有太多的web控件而不禁用他们的viewstate值的话,会让页面速度大大降低。那么哪些控件的 EnableViewState="false" 哪些控件的EnableViewState="true"呢? 一个个控件说起 linkbutton 和asp:button还有别的按纽,如果你只需要他响应单击事件,那他的viewstate可以禁用. hyperlink,一般情况下不建议用他.他的功能和<a href基本上一样,如无特殊需要尽量不要用他.他的值如果是需要后台动态添加进去的话,viewstate值不能禁用,否则在执行其它事件后他的值又不能显示,如果在前台就可以直接确定他的值,那他的viewstate是可以禁用的,但无论他的值是需要前台就可以确定还是需要后台填充进去,<a href一样都能完成的.所以一般情况下不需要使用他,所有验证控件,只要不需要在后台对他再进行编辑,都可以禁用viewstate,包括自定义验证控件都可以禁用 dropdownlist,listbox还有checkboxlist这一类的都差不多,如果是前台就能确定他的选项值,那他的viewstate可以禁用,不影响他的取值, 其实最占用资源的就是datagrid,repeater,datalist等这些控件. datagrid,当他数据填充以后他就含有100个viewstate的值,这是一个庞大的数据..如果不想办法禁用是很占用资源的. EnableViewState=False Columns="自己赋值"> |