ASP.NET中状态(信息)保持方案有如下几种:
客户端的状态信息保持本质上来说有3种:隐藏域/Cookies /Querystring(URL传参)
服务器端: Session(会话)/ Application/ Caching(缓存)/DataBase(数据库)
常用的四大状态(信息)保持方式为:ViewState 、 Cookie [服务器端];Session、Application [服务器端]
ViewState(页面级):
使用ViewState的前提:页面上必须有一个服务器端窗体标记(<form runat=“server”>)
保存的数据只有在当前页面不关闭的情况下才能够使用
ASP.NET 的 .aspx页面特有,页面级的;就是在页面上的一个隐藏域中保存客户端单独使用的数据的一种方式
服务器端控件(除那些在查看看源文件以表单标签存在的[如:文本框,按钮等])的值大多都会自动保存在ViewState中
非单值服务器控件的状态也自动保存在ViewState中
存储的值得类型为object类型 (必须可以进行序列化)
使用方式
用户数据保存方式示例:
当点击submit按钮的时候 页面数字依次刷新
aspx:
<form id="form1" runat="server">
<div>
<input id="Submit" type="submit" value="submit" />
</div>
</form>
aspx.cs:
1 int num = 0;
2 if (!IsPostBack)
3 {
4 ViewState["num"] = num;
5 }
6 else
7 {
8 num = int.Parse(ViewState["num"].ToString());
9 num++;
10 ViewState["num"] = num;
11 }
12 Response.Write(num);
通过查看原源可以看到如下代码:
1 <form method="post" action="Viewstate.aspx" id="form1">
2 <div class="aspNetHidden">
3 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTEzNDM3NzkxOQ8WAh4DbnVtAg1kZFjP0kir7oNa1uhkqdxh/XYVmMmQtWmVm8yOjozghxWo" />
4 </div>
5
6 <div>
7 <input id="Submit" type="submit" value="submit" />
8 </div>
对比编译时的代码此代码段多出了一个隐藏域,正是这个隐藏域的value 记录了上一次的数据使得每次点击submit按钮数据得以依次增加
通过工具可以查看到隐藏域value存储的信息如下图:
隐藏域value的值到底是怎嘛来的呢? 它是由viewstate对象序列化后经过Base64编码后形成的 。 读取时浏览器对value进行反编译然后反序列化最后输出。这个过程是自动进行的
应用: 大多是一些小页面。比较大的页面一般不会使用它(如:淘宝)
禁用ViewState的方法,禁用单个控件的ViewState设定enableviewstate=false,禁用ViewState以后TextBox版本不受影响,Div版本受影响,因为input的value不依靠ViewState。
禁用整个页面的,在aspx的Page指令区加上EnableViewState="false" 。内网系统、互联网的后台可以尽情的用ViewState。
WebForm的IsPostBack依赖于__ViewState
Cookie:
Cookie是一种能够让网站服务器把少量数据(4kb左右)储存到客户端的硬盘(设置了过期时间)或内存(不设置过期时间),并且读取出来的一种技术。
浏览器访问一个站点时,只将属于当前站点的Cookie发过到服务器。(根据域名)—(没必要把每家医院的病历本都带过去。)
Cookie不兼容浏览器!(不同浏览器不共享Cookie文件数据)
服务器端语言和客户端语言都可以操作
cookie的读和写都是浏览器做的
存储的数据类型为字符串
使用示例:
写:
1 HttpCookie hc = new HttpCookie("test", "My is test");
2 // 设cookie的过期时间。
3 hc.Expires = DateTime.Now.AddDays(7);
4 Response.Cookies.Add(hc);
读:
1 HttpCookie hc = Request.Cookies["test"];
2 if (hc!= null)
3 {
4 Response.Write(hc.Value);
5 }
如果服务器两次输出同一名称的cookie则相当于对cookie重新赋值
* 服务器向浏览器写出Cookie实际上就是在 响应报文中 生成响应行:
* Set-Cookie: uinfo2=123; expires=Mon, 06-Jun-2011 06:48:47 GMT; path=/
* 浏览器读取此 响应行后 会自动在客户端硬盘中产生一个Cookie文件,名为:
* Cookie:administrator@localhost/,注意@后的 localhoust/ ,实际上是颁发此Cookie网站的域名;
* 当浏览器下次再访问此域名时,就会自动将 后缀为 localhoust/ 的cookie文件内容发送到服务器
cookie的删除 : 服务器是不能直接的去删除浏览器上的cookie的,但是可以过设置cookie的过期时间来删除cookie(将过期时间设为-1)
cookie. Path(为指定的文件夹生成Cookie)
cookie.Domain (域/域名)
Cookie是和站点相关的,并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点的相关的Cookie提交到服务器,并且将服务端返回的Cookie更新到硬盘,因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据以外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新本地浏览器的Cookie就可以。
哪怕请求jpg、js、css这种文件也会带着Cookie,因为服务器端可能要进行Session的操作,比如判断是否登录。互联网优化的案例:图片服务器和主站域名不一样,降低Cookie流量的传输
Session:常用于保存登录用户ID、验证码
不同的浏览器不能共用session 因为不同的浏览器保存的sessionid(可以通过工具监视响应报文看到)不同
存储的数据只为某个客户端服务 ,并且能被网站的所有页面访问 跟cookie类似
Session只可由该会话的用户访问(因为SessionId的东东以cookie的方式保存访问者浏览器的缓存里了)
当会话过期或终止时,服务器就会清除 Session 对象
任何一个类在使用session的时候 都要告诉类要使用session,一般应用程序默认情况下不会还原session
一般应用程序在使用的时候 需添加:using
System.Web.SessionState并实现IRequiresSessionState接口而aspx.cs、aspx则不需要,因为aspx.cs
系统在默认情况下已经实现了IRequiresSessionState接口(可以通过反编译工具看到),
aspx原本就是继承与aspx.cs的所以它也就间接的实现了IRequiresSessionState接口
如果浏览器禁用了Cookie可以启用Url来传递SessionID。
开始并为Session赋值(存储的数据为object类型):
取值:
string strName = Session["uName"].ToString();
销毁(取消/退出):
Session.Abandon();//销毁服务器端的Session对象
Session.Clear();//清空服务端的Session对象里的键值对,Session对象并没有从Session池里销毁
Session常用属性、方法
属性
|
描述
|
SessionID
|
唯一用户会话标识符
|
TimeOut
|
用户超时(单位:分钟),默认20分钟
|
Count
|
会话状态集合中的项目数
|
方法
|
描述
|
Abandon方法
|
用于显式结束会话。
|
Application :
在服务器端保存共享数据的一种方式
但每次只能有一个访问者访问
使用示例:
// 写入:
// 锁定
Application.Lock();
// 存入数据
Application["num"] = 0;
// 解锁
Application.UnLock();
// 读取:
Response.Write(Application["num"].ToString());
多用于全局应用程序类中来记录数据 例如:记录当前网站的同时是在线人数(不准确的)
相关推荐
本资源“Asp.Net常用知识集锦.exe”很可能是一个包含教程或者代码示例的压缩包,旨在帮助开发者深入理解和熟练运用Asp.Net进行开发工作。 在Asp.Net的常用知识中,我们可以涵盖以下几个核心概念和技能: 1. **页面...
状态管理是ASP.NET中的另一个核心概念,它包括ViewState、Session、Cookie、Application和Cache等机制,用来在页面间或用户会话期间保持数据。ViewState用于在页面往返中保留控件的状态,Session用于跨页面跟踪用户...
5. **视图状态(ViewState)**:ASP.NET用于在页面间保持状态的一种机制,确保在PostBack期间控件值不丢失。合理使用ViewState可避免不必要的性能开销。 6. **会话(Session)**:用于在用户会话期间存储和检索数据。...
ASP.NET程序中常用代码ASP.NET程序中常用代码ASP.NET程序中常用代码ASP.NET程序中常用代码
本文将深入探讨ASP.NET中的常用语句,帮助你更好地理解和运用这些语句。 一、页面生命周期与事件处理 ASP.NET页面生命周期包含一系列的阶段,如初始化、加载、验证、呈现和卸载。在这个过程中,你可以使用特定的...
本压缩包“asp.net开发常用文档”提供了一系列关于ASP.NET开发的资源,对于那些不太熟悉软件开发流程的新手来说,是非常有价值的参考资料。 1. **ASP.NET概述** ASP.NET是.NET Framework的一部分,它提供了丰富的...
ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP...
ASP.NET还引入了ViewState和ControlState,它们是页面级别的状态管理工具,与会话状态不同,它们只在单个页面的生命周期内保持数据。 在ASP应用程序迁移到ASP.NET时,会话状态管理的兼容性是一个关键问题。开发者...
在Web服务中保持ASP.NET的状态是一项关键任务,尤其是在开发基于HTTP协议的应用程序时,由于HTTP协议的无状态特性,开发者需要寻找有效的方式来跟踪用户状态。ASP.NET提供了一种强大的解决方案,即通过`System.Web....
IIS(Internet Information Services)作为常用的Web服务器,可以托管ASP.NET应用程序。Visual Studio提供了强大的调试工具,帮助开发者找出并修复代码中的问题。 总的来说,ASP.NET提供了丰富的工具和库,使开发者...
视图状态是ASP.NET用于在页面往返过程中保持控件状态的技术。它可以保存控件的属性值,确保在回发时数据不会丢失。 5. **PostBack和PostBackUrl** PostBack是用户操作导致页面重新提交到服务器的过程,...
ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP...
5. **状态管理**:ASP.NET提供了ViewState、Session、Cookie等多种状态管理机制,用于在HTTP无状态的环境中保持用户会话状态,例如跟踪当前登录用户的信息。 6. **错误处理**:使用ASP.NET的异常处理机制,可以捕获...
它是.NET类库的子集,是ASP.NET开发人员手册一书中截取的,方便大家,方便你我
7. 视图状态:ASP.NET的视图状态机制可保存控件的状态,即使在页面回发时也能保持信息。 8. 国际化:如果实例考虑到了多语言支持,可能会用到资源文件来实现页面文本的国际化。 9. 缓存机制:为了提高性能,可能会...
ASP.NET提供了多种状态管理机制,如视图状态、控制状态、隐藏字段、Cookie、Session和Application状态等,帮助开发者在多个请求之间保持数据。 六、ASP.NET安全性 ASP.NET内置的安全特性包括身份验证、授权、加密和...
【ASP.NET学生信息管理系统】是一个基于ASP.NET技术开发的网页应用程序,主要功能是实现对学生信息的全面管理。这个系统能够满足基本的学生数据录入、查询、修改和删除等操作,为教育机构或教师提供了一个便捷的方式...
5. **状态管理**:ASP.NET提供了多种状态管理方法,如视图状态、隐藏字段、cookie、session和应用程序状态等,以保持用户交互过程中的信息。 6. **ASP.NET MVC**:探讨MVC模式,了解模型、视图和控制器的职责,以及...
ASP.NET 2.0 中,视图状态(ViewState)是一种机制,用于在用户与Web应用程序交互时保持页面和控件的状态。它是一个重要的特性,确保用户在导航网站时,页面和控件的数据能够跨多个HTTP请求得以保留。视图状态通常以...