ViewStatic 是用来保存页面的某些状态的。
但是他有什么特殊的功能,区别于Session
它有什么特殊的用法,什么情况一般用ViewState呀??
ViewState是“客户端”状态保持的一种方案,ViewState是.net中特有的,其他的编程语言,如:Java、PHP中是没有ViewState这个概念的。
举个简单的例子ViewState的例子,比如:自增运算。当你第一次向服务器请求时,看到页面上有一个数字,比如“1”,这个一就存放在了ViewState属性中了,当你点自增按钮的时候,你会看新的数字“2”,这个2其实也是保存在了ViewState中了,只有这样,服务器才能每次根据ViewState中值得到新的结果,并发送给你。
可能有点迷糊,看一下代码你就明白了!
前台代码:
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ViewState.aspx.cs" Inherits="ViewState" %>
2
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6 <head runat="server">
7 <title></title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11 <div>
12 <input type="submit" value="自增" />
13 </div>
14 </form>
15 </body>
16 </html>
后台代码:
1 using System;
2 using System.Collections.Generic;
3 using System.Web;
4 using System.Web.UI;
5 using System.Web.UI.WebControls;
6
7 public partial class ViewState : System.Web.UI.Page
8 {
9 int a = 0;
10 protected void Page_Load(object sender, EventArgs e)
11 {
12 if (ViewState["count"] != null)
13 {
14 a = Convert.ToInt32(ViewState["count"]);
15 }
16 a++;
17 Response.Write(a.ToString());
18 ViewState["count"] = a;
19 }
20 }
viewState是存储在隐藏域中的session是存在在服务器端的,一般情况下都会设置session过期的时间,而viewState不会过期的
Http协议是无状态的,ViewStatic可以保存视图状态。
至于与Session的区别,Session是保存在服务器端的,可以跨页面访问。
ViewStatic保存在客户端,不可跨页面访问。
我补充一下,因为ViewStatic是保存在客户端所以用户每次与服务器端交互都要额外的传递ViewStatic里的信息,这样就加大了服务器的流量
ViewState用来存储当前页的访问状态等信息。一般用在带搜索条件的分页中。
学习了!