ASP.NET页面——视图状态
来源:百度文库 编辑:神马文学网 时间:2024/04/28 11:51:56
ASP.NET页面——视图状态
从运行的ASP.NET应用程序中,首先注意的是页面的会送功能。这对于开发人员真的是一个好处,开发人员不用手动保存服务器的每次往返之间的信息。ASP.NET为服务的服务器控件(服务器控件使用runat=’”server”属性指定)提供视图状态。当ASP.NET为HTML的形式呈现页面时,它创建一个隐藏的窗体字段,成为_ViEWSTATE。这个字段是一个加密的、标记化得字符串(可以通过工具ViewStateDecoder查看,下载地址),包含ASP.NET页面上每个控件的名/值对。每个控件存储的值实际上时控件关联的值和状态信息。当页面被发送到服务器是,ASP.NET可以轻松地使用这些值并重新构建页面控件,控件的值和状态,不用开发人员编写代码。
创建一个ASP.NET页面PageViewStateDemo.aspx实现一个文本框,两个按钮实现文本框的隐藏和显示,以说明ViewState字段值是如何工作的。页面代码如下:
top:25px; height:15px">Test Field
从运行的ASP.NET应用程序中,首先注意的是页面的会送功能。这对于开发人员真的是一个好处,开发人员不用手动保存服务器的每次往返之间的信息。ASP.NET为服务的服务器控件(服务器控件使用runat=’”server”属性指定)提供视图状态。当ASP.NET为HTML的形式呈现页面时,它创建一个隐藏的窗体字段,成为_ViEWSTATE。这个字段是一个加密的、标记化得字符串(可以通过工具ViewStateDecoder查看,下载地址),包含ASP.NET页面上每个控件的名/值对。每个控件存储的值实际上时控件关联的值和状态信息。当页面被发送到服务器是,ASP.NET可以轻松地使用这些值并重新构建页面控件,控件的值和状态,不用开发人员编写代码。
创建一个ASP.NET页面PageViewStateDemo.aspx实现一个文本框,两个按钮实现文本框的隐藏和显示,以说明ViewState字段值是如何工作的。页面代码如下:
Width="61px"Text="Hide"onclick="btnHide_Click" />
Width="61px"Text="Show"onclick="btnShow_Click" />
后台代码很简单:
protected void btnHide_Click(object sender, EventArgs e){this.txtName.Visible = false;}protected void btnShow_Click(object sender, EventArgs e){this.txtName.Visible = true;} 在浏览器查看该页面,在ASP.NET页面返回后查看其源代码: 利用刚才提到的ViewState查看工具ViewStateDecoder查看ViewState: 点击Hide按钮再看源代码:
可以看到ViewState的值不一样了:
ViewState在开发Web页面是确实可以节约时间。但是,它有性能成本。在上面的例子可以看出,对服务器控件的一个属性的最轻微的修改也会改变视图状态的大小。在页面中添加10到20个简单的服务器控件,和几个高级的服务器控件,可以看到呈现HTML的大小可以变成应用程序的一个瓶颈,尤其是对于带宽有限的用户来说。
为了提高ASP.NET应用程序的性能,必须得控制服务器控件的使用以降低呈现的HTML的大小。控制服务器控件的手段就是在不需要服务器的代码执行期间在不需要与控件交互时使用静态的HTML控件。
对一个正常的HTML控件使用runat=“server”属性,它就可以从服务器端的代码中访问,并且和ASP.NET服务器控件具有相同的性能损失。
禁用ViewState的方式有:
1、禁用控件的ViewState
设置TextBox1的ASP.NET文本框在视图状态中不再保存任何信息。但不会影响页面中其他控件或页面本身的ViewState信息。
2、禁用页面的ViewState
<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false" %>
禁用用户控件的ViewState跟禁用页面的ViewState类型也是设置其EnableViewState="false" 。
3、禁用应用程序的ViewState
ASP.NET页面——视图状态
ASP.NET页面——页面事件
ASP.NET的页面——ASP.NET页面的生命周期
ASP.NET状态管理——Application
ASP.NET状态管理——Session篇
asp.net页面缓存技术
asp.net中怎样在页面间传值?
asp.net WebForm页面间传值方法
asp.net WebForm页面间传值方法
asp.net页面的生存周期
转载:ASP.NET小技巧——回传后保持页面的滚动位置 - 希腊字符 - 博客园
如何在ASP.NET环境下长期保存ASP.NET页面的session变量
ASP.NET页面间数据传递的方法讲解|.net(C# vb asp)
ASP.NET 2.0无刷新页面新境界
培训ASP.NET 2.0,无刷新页面新境界!
ASP.NET十分有用的页面间传值方法
关于asp.net页面按钮失效的解决方法
领先技术-ASP.NET 页面的服务器端 by Dino Esposito
ASP.NET(C#)页面间传值的常见方法
Asp.NET 生成静态页面并分页的代码实现
Asp.NET 生成静态页面并分页的代码00
asp.net动态设置页面的title,meta标签1
ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第一篇:准备工作...
ASP.NET 2.0中数据绑定方法—Asp.Net开发技巧