简介
在这篇文章中,我想分享一些关于ViewState的概念。状态维护
网页是无状态的,因为HTTP协议是无状态的协议。默认情况下,国家不能保持不同的客户端请求,由应用服务器之间。但有些技术是提供保持状态。我们有三个不同类型的国家:页级用户级别应用水平
ViewState是用来维持页面级别状态。其余的两个是这篇文章的。
在ASP.NET,Control.ViewState物业已经给每个控制之间往返服务器的请求保留其值。ViewState是如何工作的
如果启用的ViewState属性是一个Web表单,那么我们可以看到,右击鼠标并选择"查看源代码在浏览器窗口中的HTML代码段。它会是这样的:LT输入类型="hiddenquot;名称= quot; __VIEWSTATEquot;
; 值="DDDF22DDFD3453333D2DDDFDFD332133 =="/ GT;
一个隐藏的控件添加到每一页和所有控件的数据存储和发送到客户浏览器。当重载页面,两种方法的ViewState被称为:LoadViewState()和SaveViewState(),和数据将被加载到相应的控制。我们可以存储在ViewState?
,我们可以使用ViewState存储任何类型的对象,如果该对象是可序列化的,或者是有TypeConverter的。序列化是将对象的数据转换成一个基于流的输出,并使用该输出的过程中,我们可以构造相同的对象??在这里,我们必须知道此序列中起着其作用在ViewState。早,我们看到控件的数据存储到一个隐藏字段,在此之前的价值或数据被序列化。用户定义的数据类型
用户可以定义自己的数据类型。类和结构的定义属于用户定义的数据类型。如果我们要发挥与用户定义的数据类型和ViewState的,那么我们真的需要集中定义。
试试下面的代码在C#NET Web应用程序:使用系统;使用System.Collections;使用System.ComponentModel;使用System.Data这;使用System.Drawing;使用的System.Web;使用System.Web.SessionState;使用System.Web.UI程序;使用System.Web.UI.WebControls程序;使用System.Web.UI.HtmlControls;命名空间在CodeProject{ 公共类WebForm1的:的System.Web.UI.Page {
60; 私人无效的Page_Load(对象发件人,发送System.EventArgs)
{ UserClass UC =新UserClass(); this.ViewState ["; Keyquot"] =加州大学; &
#160; 回复于("视图状态是workng .. quot;); &
#160; } #region Web窗体设计器生成的代码 覆盖保护无效的OnInit(EventArgs的发送)
0; { / / / / CODEGEN:该调用是ASP.NET Web窗体设计器所必需的。
/ / ();
60; base.OnInit(E); } 私人无效的InitializeComponent() {
0; this.Load =新System.EventHandler(this.Page_Load);
} #endregion } 公共类UserClass {
160; 公共UserClass() {
_number = 1; _name ="cp.comquot;;
; } 私人诠释_number; 私人字符串_name; }}
它显示了以下错误:
{S0}
这是因为用户定义的类CodeProject.UserClass是不可序列化。因此,这种类型的斜面的对象存储在ViewState中。
Serializable属性添加到类定义和运行的代码,将工作做好... .......[Serializable接口()] 公共类UserClass { 公共UserClass() { _number = 1; _name ="cp.comquot;; } 私人诠释_number; 私人字符串_name; }......| Sendilkumar.M