关于Asp.net 状态管理

一,概述

为了克服HTTP协议的无状态这一特点,asp.net中可以使用五种状态机制:

1,视图,Viewstate

2,查询字符串,即在URL后的?key=value&key1=value1

3,自定义Cookie

4,会话Session对象

5,应用Application对象

6,配置文件

7,缓存Cache对象

8,在Global.asax中设置静态成员

二,分述

1,视图,Viewstate

a. 不会增加服务器负担,但由于viewstate隐藏在页面中,会是页面的size变大,加大传输量。

b. 不十分安全,因为状态传输到了客户端。客户可以进行修改。当然可以采取一定的加密方式。

c.  应用范围只限于本页面,多页面间无法共享

d. 控件不一定非要用enableViewState,有些情况下,最好设置为false

 

2,查询字符串,即在URL后的?key=value&key1=value1

a. 要注意UrlEncode来避免url中的非法字符。HttpUtility类中有一个

b. 服务端用Request.QueryString[“XX”]来获取

3,自定义Cookie

4,会话Session对象

 

5,应用Application对象

6,配置文件

7,缓存Cache对象

三,举例

1,ViewState

在default.aspx中加入以下代码:

<asp:TextBox ID="textbox1" runat="server" EnableViewState="true" OnTextChanged="Ontextbox1_TextChanged"></asp:TextBox>

<asp:Button ID="btn1" runat="server" Text="Button"  />

在default.aspx.cs中加入以下代码:

protected void Ontextbox1_TextChanged(object sender, EventArgs e)
{
        Response.Write("text changed!");
}

启动执行后,输入“tt”,点按钮,会得到“text changed!”,这时,再点一次,“text changed!”消失,因为第三次和第二次输入没有不同。

将EnableViewState属性设置false,启动后,输入“tt”,点击按钮,得到“text changed!”,再点一次,依然得到“text changed!”

因为当EnableViewState为true时,每次比较是同上一次比较,设为false后,每次比较是于程序初始状态比较。

你可能感兴趣的:(session,server,application,asp.net,button,textbox)