首页 新闻 会员 周边

ViewState到底是什么东东啊

0
悬赏园豆:30 [已解决问题] 解决于 2011-11-02 09:05

ViewStatic 是用来保存页面的某些状态的。

但是他有什么特殊的功能,区别于Session

它有什么特殊的用法,什么情况一般用ViewState呀??

呓语的主页 呓语 | 初学一级 | 园豆:90
提问于:2011-10-24 09:52
< >
分享
最佳答案
0

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 }
收获园豆:20
激流勇进 | 菜鸟二级 |园豆:206 | 2011-10-24 11:46
其他回答(6)
0

viewState是存储在隐藏域中的session是存在在服务器端的,一般情况下都会设置session过期的时间,而viewState不会过期的

sunlary | 园豆:934 (小虾三级) | 2011-10-24 10:08
1

Http协议是无状态的,ViewStatic可以保存视图状态。

至于与Session的区别,Session是保存在服务器端的,可以跨页面访问。

ViewStatic保存在客户端,不可跨页面访问。

收获园豆:5
写代码的小2B | 园豆:4371 (老鸟四级) | 2011-10-24 10:10
1

我补充一下,因为ViewStatic是保存在客户端所以用户每次与服务器端交互都要额外的传递ViewStatic里的信息,这样就加大了服务器的流量 

收获园豆:5
大胃Q | 园豆:212 (菜鸟二级) | 2011-10-24 12:37
0

ViewState用来存储当前页的访问状态等信息。一般用在带搜索条件的分页中。

幻天芒 | 园豆:37175 (高人七级) | 2011-10-25 22:06
0
Hunt | 园豆:21 (初学一级) | 2011-10-26 13:46
0

学习了!

华-子 | 园豆:156 (初学一级) | 2011-10-26 14:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册