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 ...
随机推荐
- C和指针之学习笔记(5)
第10章 使用结构和指针 单链表 typedef struct NODE { struct NODE *link; int value; } Node; 插入到一个有序单链表: #include< ...
- android 启动流程
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha adb shell 后 用 ps 命令 回车 可以看到 运行的进程. 如下结果: ct ...
- 表白 代码 韩梦飞沙-画心.html
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 韩梦飞沙-画心.html <!DOCTYPE html> <html& ...
- [Usaco2015 Feb]Censoring --- AC自动机 + 栈
bzoj 3940 Censoring 题目描述 FJ把杂志上所有的文章摘抄了下来并把它变成了一个长度不超过10^5的字符串S. 他有一个包含n个单词的列表,列表里的n个单词记为T1......Tn. ...
- 【最小表示法】BZOJ2176-Strange string(unsigned char!!!)
[题目大意] 给定一个字符串S = {S1, S2, S3 … Sn}, 如果在串SS中, 子串T(|T| = n)为所有长度为n的SS的字串中最小的(字符串的比较), 则称T为”奇怪的字串”. 你的 ...
- hdu 4284 状态压缩dp
题意: 有N 个点的无向图,要去其中 h个地点做事,做事需要先办理护照,之后可以挣一定数量的钱,知道了一开始有的总钱数,和 一些城市之间 道路的花费,问可不可以在 指定的 h 个城 ...
- Spring内部bean实例
在Spring框架中,一个bean仅用于一个特定的属性,这是提醒其声明为一个内部bean.内部bean支持setter注入“property”和构造器注入"constructor-arg“. ...
- Emacs复制粘贴乱码问题以及修改当前文件编码
编码修改: 为了和Linux兼容,win环境下将emacs编码修改为utf-8,随意复制了其他关于emacs编码的配置,如下: (setq locale-coding-system 'utf-8) ( ...
- android 各种颜色值 colors.xml
<?xml version="1.0" encoding="utf-8" ?> <resources> <color name=& ...
- asp.net Core 中间件Hello world
虽然在ASP.NET 5中,微软没有再强调OWIN(Open Web Interface for .NET)及其微软官方的OWIN实现Katana,但是其中涉及到一些原则和设计思想依然被ASP.NET ...