asp.net EnableViewState禁用与注意事项
2013-04-10 20:48
363 查看
每个web控件都有个ViewState值,如果一个页面有太多的web控件而不禁用他们的viewstate值的话,会让页面速度大大降低。那么 哪些控件的EnableViewState="false" 哪些控件的EnableViewState="true"呢??
一个个控件说起
textbox,如果你只需要取他的text里面的值,而不是要他响应什么事件,那他的viewstate是可以禁用的.
linkbutton 和asp:button还有别的按纽,如果你只需要他响应单击事件,那他的viewstate可以禁用.
hyperlink,一般情况下不建议用他.他的功能和<a href基本上一样,如无特殊需要尽量不要用他.他的值如果是需要后台动态添加进去的话,viewstate值不能禁用,否则在执行其它事件后他的值又不 能显示,如果在前台就可以直接确定他的值,那他的viewstate是可以禁用的,但无论他的值是需要前台就可以确定还是需要后台填充进去,<a href一样都能完成的.所以一般情况下不需要使用他
所有验证控件,只要不需要在后台对他再进行编辑,都可以禁用viewstate,包括自定义验证控件都可以禁用
dropdownlist,listbox还有checkboxlist这一类的都差不多,如果是前台就能确定他的选项值,那他的 viewstate可以禁用,不影响他的取值,但如果他的值是需要后台来梆定,又是需要在!ISPostBack里绑定的话,那他的viewstate值 是不能禁用的,否则一执行其它事件以后,他的值就不存在了.
其实最占用资源的就是datagrid,repeater,datalist等这些控件.
datagrid里面数据量庞大.但他的viewstate值在翻页,编辑等操作时起到很大的作用,所以datagrid的viewstate值不能完全 禁用.
我们这里以datagrid为例介绍一个如何禁用一批viewstate来优化速度
datagrid 里<asp:BoundColumn>.他在浏览时是个Label,编辑时他是一个textbox.而label和textbox都是带有 viewstate.比如是一个5列20行的datagrid,当他数据填充以后他就含有100个viewstate的值,这是一个庞大的数据..如果不 想办法禁用是很占用资源的.<asp:BoundColumn>方法虽然方便,但尽量大家不要使用,用如下方法代替
<asp:TemplateColumn>
<ItemTemplate>
<div align=center><%# DataBinder.eval_r(Container,"DataItem.id") %></div> //不要使用任何控件,一样能显示,而且不占用资源
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="Textbox2" Text=''<%# DataBinder.eval_r(Container,"DataItem.listid")%>'' Runat="server" EnableViewState=False Columns="自己赋值">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
datagrid里的项,viewstate能禁用的尽量禁用,太占资源了
一个个控件说起
textbox,如果你只需要取他的text里面的值,而不是要他响应什么事件,那他的viewstate是可以禁用的.
linkbutton 和asp:button还有别的按纽,如果你只需要他响应单击事件,那他的viewstate可以禁用.
hyperlink,一般情况下不建议用他.他的功能和<a href基本上一样,如无特殊需要尽量不要用他.他的值如果是需要后台动态添加进去的话,viewstate值不能禁用,否则在执行其它事件后他的值又不 能显示,如果在前台就可以直接确定他的值,那他的viewstate是可以禁用的,但无论他的值是需要前台就可以确定还是需要后台填充进去,<a href一样都能完成的.所以一般情况下不需要使用他
所有验证控件,只要不需要在后台对他再进行编辑,都可以禁用viewstate,包括自定义验证控件都可以禁用
dropdownlist,listbox还有checkboxlist这一类的都差不多,如果是前台就能确定他的选项值,那他的 viewstate可以禁用,不影响他的取值,但如果他的值是需要后台来梆定,又是需要在!ISPostBack里绑定的话,那他的viewstate值 是不能禁用的,否则一执行其它事件以后,他的值就不存在了.
其实最占用资源的就是datagrid,repeater,datalist等这些控件.
datagrid里面数据量庞大.但他的viewstate值在翻页,编辑等操作时起到很大的作用,所以datagrid的viewstate值不能完全 禁用.
我们这里以datagrid为例介绍一个如何禁用一批viewstate来优化速度
datagrid 里<asp:BoundColumn>.他在浏览时是个Label,编辑时他是一个textbox.而label和textbox都是带有 viewstate.比如是一个5列20行的datagrid,当他数据填充以后他就含有100个viewstate的值,这是一个庞大的数据..如果不 想办法禁用是很占用资源的.<asp:BoundColumn>方法虽然方便,但尽量大家不要使用,用如下方法代替
<asp:TemplateColumn>
<ItemTemplate>
<div align=center><%# DataBinder.eval_r(Container,"DataItem.id") %></div> //不要使用任何控件,一样能显示,而且不占用资源
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="Textbox2" Text=''<%# DataBinder.eval_r(Container,"DataItem.listid")%>'' Runat="server" EnableViewState=False Columns="自己赋值">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
datagrid里的项,viewstate能禁用的尽量禁用,太占资源了
相关文章推荐
- asp.net EnableViewState禁用与注意事项
- ASP.NET中控件的EnableViewState属性及彻底禁用
- ASP.NET中控件的EnableViewState属性及彻底禁用
- 禁用ViewState注意事项
- 我的ASP.NET之旅(二):捣乱的EnableViewState
- 精进不休 .NET 4.0 (1) - asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelection, 控件的其它一些改进
- ASP.NET在禁用视图状态的情况下仍然使用ViewState对象【转】
- asp.net 禁用viewstate在web.config里
- ASP.NET CORE 自定义视图组件(ViewComponent)注意事项
- ASP.NET中的EnableViewState
- ASP.Net中控件的EnableViewState属性
- ASP.NET中EnableViewState
- 关于EnableViewState以及页面中选择asp.net服务端控件和HTML控件的思考
- ASP.Net中控件的EnableViewState属性
- asp.net 2.0里当readonly遇上enableviewstate=false
- ASP.Net中控件的EnableViewState属性
- ASP.Net中控件的EnableViewState属性
- ASP.Net中控件的EnableViewState属性
- asp.net 2.0里当readonly遇上enableviewstate=false
- ASP.Net中控件的EnableViewState属性