Asp.net状态管理

来源:互联网 发布:易名中国域名注册 编辑:程序博客网 时间:2024/05/02 02:15

目录

 

一、基于客户端的状态管理... 2

1、视图状态ViewState. 2

2、隐藏域... 3

3Cookie集合... 3

4、查询字符串... 3

二、基于服务器端的状态管理... 3

1Application状态... 3

2Session. 4

 

正文

一、基于客户端的状态管理

视图状态ViewState

隐藏的窗体域

Cookie

查询字符串

1、视图状态ViewState

ViewState视图状态是所有控件的一个属性。

HTML源代码中对应一个__ViewState的隐藏字段。

Hash的方式存储(键值对)。

ASP.NET服务器控件的生命周期

    ◆ (1)初始化 -Init事件(OnInit方法)

    ◆ (2)加载视图状态 -LoadViewState方法

    ◆ (3)处理回发数据 -LoadPostData方法

    ◆ (4)加载 -Load事件(OnLoad方法)

    ◆ (5)发送回发更改通知 –RaisePostDataChangedEvent方法

    ◆ (6)处理回发事件 –RaisePostBackEvent方法

    ◆ (7)预呈现 –PreRender事件(OnPreRender方法)

    ◆ (8)保存视图状态 –SaveViewState方法

    ◆ (9)呈现 –Render方法

    ◆ (10)处置 –Dispose方法

    ◆ (11)卸载 –UnLoad事件(OnUnLoad方法)

启用视图状态

       EnableViewState=”true”

       默认为true,如果为false,那么该控件和子控件的视图状态就不会被串行化

可以在视图中存储的类型

       Int32BoolStringColorArrayArrayListUnit及其以上类型的HashTable对象

视图状态与安全

       视图状态串行化的字符串表达式作为明文来往返传送。这是不安全的。在视图状态中决

不能保存任何信息(例如口令、连接字符、文件路径)。

示例

if (ViewState["Count"] == null)

    ViewState["Count"] = 0;

int nCount = (int)ViewState["Count"];

nCount += 1;

ViewState["Count"] = nCount;

Label1.Text = nCount.ToString();

2、隐藏域

HtmlInputHidden

<input type=hidden value=””/>

可以作为服务器端控件使用

3Cookie集合

存储在客户端的小量文本信息。

使用Response对象设置Cookie状态

       Response.Cookies[“UserName”].Value=”张三”;

     使用Request对象读取已有的Cookie

String strName = Request.Cookies[“UserName”].Value;

     清除Cookie

Response.Cookies[“UserName”].Value=null;

Response.Cookies[“UserName”].Expires=new DateTime(1999,10,12);--设置过期时间

Cookie的属性

Value:值,String类型。

Domain:设置这个属性后,只有在这个域下才能访问该Cookie

Path:该属性指定哪些路径下的页面可以访问该Cookie

    Expires:指定Cookie过期的日期。

4、查询字符串

……/a.aspx?para1=abc&para2=123;

QueryString[para1].ToString();

大多数浏览器限制URL长度为255个字符长。

二、基于服务器端的状态管理

Application对象

Session对象

1Application状态

应用程序级的状态存取

变量状态的存储和提取

       Application[“Name”]=”张三”;

       String strUserName=Application[“Name”];

     同时访问要加锁

Application.Lock();

……

Application.UnLock();

2Session

对网站的一次访问,超时后,会自动结束会话。

Session的属性和方法

       TimeOut属性:超时时间。默认为20分钟。

       Abandon():结束当前会话。会话中的所有信息都被清空。

       Clear():删除当前会话中的所有信息,但不结束会话。

       IsNewSession:判断是否是一个新的会话,比如用于统计访问量。

原创粉丝点击