ASP.NET中的状态—状态管理概述(一)

  前言

  以前我们在学计算机的时候都是单机应用程序即运行在一台计算机上的程序,随着程序的发展先后出现了C/S结构,后来出现了B/S结构,现在最火的也是B/S结构,B/S结构相对单机应用程序和C/S结构应用程序发生了很大的变化,一个很重要的问题是数据如何保存下来?也就是数据如何从一个页面传递到另一个页面?如何在好多页面当中共享一些数据?这里就不得不说ASP.NET的中的State了, 既然是B/S结构,那么当然有基于客户端的状态管理cookie,基于服务器端的状态管理session。

   Http协议概述

   再说ASP.NET状态之前先说一个HTTP协议,在B/S结构中一个重要的传输协议是HTTP协议,它是一个“无状态”的协议,为什么说它是一个无状态的协议呢?你访问一个页面后,它会把你请求的资源发给你后,抛弃页面变量,控件属性等,举个例子做过ASP的人都知道在一个页面中你在input 中输入“张三”你刷新一下这个页面后,里面的value就等于空了如,再比如在有些网站注册会员的时候填写了大量信息,当点“提交”按钮发送给服务器的时候发现一个信息填写错误了服务器返回后,文本框上的值都没了,又得一个个再重新填写是件很痛苦的事情,由此来看它抛弃了控件的属性,并不保存下来数据,所以从HTTP协议来看你的这个页面和你要跳到的下一个页面完全是独立的,在两个页面之间作为HTTP协议来说是没有任何联系的,所以想在两个页面中传送数据就得用到ASP.NET中的状态了,那有人会说了在ASP.NET中拖放一个LabelControl 在代码里把它的Text属性设为比如:“我叫李四” this.Label1.Text = "我叫李四",刷新页面后“我叫李四”还在啊,那是因为ASP.NET中所有控件都有一个共同的属性ViewState,这个属性值默认为true,如果你把label1的EnbleViewState的值设置为false,那么你再刷新页面后,就会发现“我叫李四”不见了,所以ViewState是ASP.NET专门提出来用于页面间保存数据用的。

  实质上ASP.NET状态就是在页面间如何传递数据,共享数据的一种技术。

原文地址:https://www.cnblogs.com/menglin2010/p/1896517.html