Asp.net视图状态的作用
视图状态(view state)是在单个页面中保存信息的第一选择,ASP.NET Web控件也使用试图状态在回发间保存属性值。通过页面内建的 ViewState 属性,你可以把自己的数据放入到视图状态集合中,可以保存的信息类型包括简单数据类型和自定义对象。那么,.Net开发环境下的视图状态与基于COM下的传统视图状态作用有何不同呢?
基于COM的视图状态
在传统(基于COM)ASP下,在构建即将输出的HTTP响应时,WEB开发者需要手动为传入的窗体部件重新填充值。例如,如果传入的HTTP请求包括5个带有特定值的文本框,*aspx文件需要提取当前的值(通过Form或者Request对象的QueryString集合)并且手动把它们放回到HTTP响应流里(即拖放)。如果开发者没有设置这个操作,呈现给调用者的就是5个空的文本框!
基于.Net的视图状态
在ASP.NET下,我们不在需要手动删除和重新填充位于HTML部件内的值,因为ASP.NET运行时将自动嵌入一个隐藏的表单字段(名为_VIEWSTATE),其范围时浏览器和一个指定的页面之间。分配到这个字段的数据是一个64位编码的字符串,它包括一个描速当前页面上的INIT事件处理程序的作用域内访问web部件的状态最冒险)同时,恰恰在输出相应被提交回发出请求的浏览器之前,_VIEWSTATE数据被用来重新填充窗体部件。显然,ASP.NET最大的优点就是不需要任何用户参与。当然,如果愿意的话,用户总是能够与默认功能交互。需要注意的是,你是在*.ASPX文件中直接硬编码了ListBox内的项。你已经知道,在HTML表单内的<asp:定义将在最后的HTTP响应前自动提交会它们的HTML代码(假如他们有RUNAT=”SERBVER”特性)。最简短的一句话概括就是:在.NET下,较大的视图状态数据将自动被压缩,以减少该隐藏表单字段的大小。
视图状态示例
下面的代码演示了页面如何使用视图状态,它允许用户保存一系列的值,并将其恢复。
public partial class Chapter06_ViewStateTest : System.Web.UI.Page{protected void btnSave_Click(object sender, EventArgs e){SaveAllText(this.Table1.Controls, true);
}
protected void btnRestore_Click(object sender, EventArgs e){RestoreAllText(this.Table1.Controls, true);}
private void SaveAllText(ControlCollection controls, bool saveNested){foreach (Control control in controls)
{if (control is TextBox)
{ViewState[control.ID] = ((TextBox)control)。Text;}
// bool类型的 saveNested 参数给方法提供了更大的灵活性 www.sytm.net // 可以控制是否需要递归
if (control.Controls != null && saveNested){SaveAllText(control.Controls, true);
}
}
}
private void RestoreAllText(ControlCollection controls, bool saveNested){foreach (Control control in controls)
{if (control is TextBox)
{if (ViewState[control.ID] != null)
{((TextBox)control)。Text = ViewState[control.ID].ToString();}
}
if (control.Controls != null && saveNested){RestoreAllText(control.Controls, true);
}
}
}
}
Asp.net视图状态的作用的更多相关文章
- ASP.NET machineKey的作用和使用方法
ASP.NET machineKey的作用 如果你的Asp.Net程序执行时碰到这种错误:“验证视图状态 MAC 失败.如果此应用程序由网络场或群集承载,请确保 <machineKey> ...
- ASP.NET - 视图状态概述
本文转载自dodream 视图状态是 ASP.NET 页框架用于在往返过程之间保留页和控件值的方法.在呈现页的 HTML 标记时,必须在回发过程中保留的页和值的当前状态将被序列化为Base64 编码字 ...
- ASP.NET AntiXSS的作用
XSS跨站脚本攻击 是指用户输入HTML编码对网站进行跨站攻击. 通过使用FCKeditor.FreeTextBox.Rich TextBox.Cute Edito ...
- ASP.NET私有构造函数作用
一.私有构造函数的特性 1.一般构造函数不是私有或者保护成员,但构造函数可以使私有成员函数,在一些特殊的场合,会把构造函数定义为私有或者保护成员. 2.私有构造函数是一种特殊的实例构造函数.它通常用在 ...
- .net,C#,Vb,F#,Asp,Asp.net区别以及作用和方向
.net是平台,其他都是运行在其.NET FrameWork环境下的 C#,Vb都是语言运行在.net 平台下 Asp,Asp.net 都是用来写Web网页的,但是Asp和Asp.net有区别 Asp ...
- 精通C#(第6版)
<精通C#(第6版)> 基本信息 原书名:Pro C# 5.0 and the .NET 4.5 framework,sixth edition 作者: (美)Andrew Troelse ...
- ASP.NET MVC掉过的坑_MVC初识及MVC应用程序结构
APS.Net MVC 浅谈[转] 来自MSDN 点击访问 MVC 理论结构 模型-视图-控制器 (MVC) 体系结构模式将应用程序分成三个主要组件:模型.视图和控制器. ASP.NET MVC 框架 ...
- [转]ASP.NET 页生命周期概述
原文链接:http://msdn.microsoft.com/zh-cn/library/ms178472(v=vs.110).aspx 对应版本:.NET 4.0 ASP.NET 页运行时,此页将 ...
- ASP.NET 安全认证
一. 新建一个测试项目 新建一个测试项目,包含三张页面(Default.aspx.Login.aspx.UserInfo.aspx). 二. 修改 Web.config 1.把<authen ...
随机推荐
- struct模块-黏包的解决方法
黏包的解决方案 解决方案一 问题的根源在于,接收端不知道发送端将要传送的字节流的长度,所以解决粘包的方法就是围绕,如何让发送端在发送数据前,把自己将要发送的字节流总大小让接收端知晓,然后接收端来一个死 ...
- 几何:pick定理详解
一.概念 假设P的内部有I(P)个格点,边界上有B(P)个格点,则P的面积A(P)为:A(P)=I(P)+B(P)/2-1. 二.说明 Pick定理主要是计算格点多边形(定点全是格点的不自交图形)P的 ...
- []APC001
题目质量都好高啊... A:求一个是$X$的倍数但不是$Y$的倍数的数,无解输出$-1$ 无解就是$Y|X$,否则输出$X$即可 B:给定$a_{1\cdots n},b_{1\cdots n}$,求 ...
- hdu 5224 Tom and paper 水题
Tom and paper Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/6 ...
- C#利用NPOI在同一个Excel文件中创建多个sheet
借用NPOI来实现,要在同一Excel文件中创建多个sheet,只需要在同一个workbook中创建多个sheet即可.要注意的是,sheet的名字一定不能重复.下面是实现的代码: private v ...
- 关于U盘启动操作系统《30天自制操作系统》
原本的启动是从img启动的,并且这个img是用FAT12文件系统进行格式化的(详细去搜索FAT12文件格式,这里给大家推荐一篇http://www.doc88.com/p-646605198560.h ...
- How to run WPF – XBAP as Full Trust Application
Recently I work on WPF-XBAP application that will run from intranet website: This application must h ...
- myeclipse 8.5破解方法
转自: http://blog.sina.com.cn/s/blog_70600f7201018pib.html , 记录下来存档 Step: 1.建立一个任意名称的Java Project 2.在 ...
- 微信开发之如何使用开发工具--weixin-java-tools
一.前沿 微信公众平台由于没有提供针对语言的开发包,只公布了一个基于Http协议的接口和加解密的算法sdk,这样给微信公众号的开发者带来很多工作量,除了实现业务逻辑外,还需要自己处理底层的接口协议细节 ...
- nodejs 服务器 崩溃 2种解决办法
用node启动server后,发现服务器不稳定,经常crash.我是用ssh远程登录的,ssh远程通道中断,或者Ctrl+C,都会使nodejs server崩溃掉. 一,node server 崩溃 ...