一,概述
为了克服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后,每次比较是于程序初始状态比较。
本文介绍了ASP.NET中使用的八种状态管理机制,包括视图状态(Viewstate)、查询字符串、自定义Cookie、会话(Session)对象等,并通过实例详细解释了视图状态的工作原理及应用场景。


被折叠的 条评论
为什么被折叠?



