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 ...
随机推荐
- 【BZOJ 1449】 1449: [JSOI2009]球队收益 (最小费用流)
1449: [JSOI2009]球队收益 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 841 Solved: 483 Description Inpu ...
- QT学习笔记2:QT中常用函数
一.QString转number QString number() QString number() QString number() QString number() QString number( ...
- codevs 1058 合唱队形 2004年NOIP全国联赛提高组
1058 合唱队形 2004年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description N位同学站成一排,音 ...
- 【最大化平均值】POJ3111-K Best
[题目大意] 给出v[]和w[],求的最大值. [思路] 二分s(S)的值,可变形为s(S)*Σw>=Σv,所以只需要把求出x*w[i]-v[i],看看前k个的和是否大于等于0,大于等于0就满足 ...
- MySql默认编码所造成的乱码麻烦1.222
1.前言 MySQL在安装时,最后的一步,会让你选择MySQL服务器及客户端.数据库.连接接口的默认编码.通常可选择 UTF8和GB2312. 但是,如果你选择了utf8的时候,恰好你要从另一个数据库 ...
- java中代码块的认知
在以往面试题中,出现过很多次关于代码块执行顺序的题目,目前可算是搞清楚执行顺序了.看以下代码: package com.itcast.code; public class BlockTest { st ...
- bzoj 1231: [Usaco2008 Nov]mixup2 混乱的奶牛 -- 状压DP
1231: [Usaco2008 Nov]mixup2 混乱的奶牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 混乱的奶牛 [Don Pi ...
- Ubuntu 16.04安装Wine版的微信(deepin-wechat)
说明: 1.使用的Wine版本是深度出品(Deepin),已经精简了很多没用的配置,使启动能非常快,占用资源小. 2.关于没有.wine文件夹的解决方法:在命令行上运行winecfg: 3.有可能在今 ...
- Boost Converter
Single Inductor Buck-Boost Converter in Tiny WCSP The TPS63036 is a non inverting buck-boost convert ...
- 找不到原始安装光盘的佳能EOS Utility的下载和安装
佳能EOS Utility的下载和安装 佳能很有意思,在官方网站上提供的数码相机驱动程序,只是“升级版”,而不是原始安装版.如果我有安装光盘,还去网上下载驱动干吗?解决方案:1,从佳能官方网站上下 ...