`
java-mans
  • 浏览: 11428797 次
文章分类
社区版块
存档分类
最新评论

viewstate的作用倒底是什么?

 
阅读更多
  • aspwebchh
  • (aspwebchh)
  • 等 级:
  • 结帖率:100.00%
楼主发表于:2010-07-16 01:10:03
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBwLcu/T4CgLA4sWlBwKo6+r3AQLJ9ZLmBQK5u6CKDwLy+u/iAQLbg+7IBBS0GkaH7wSVqcBtWB5O0wUg7Oyb" />


在 页面中老看到这种东西

网上查了下说是用来存放控件状态的 看了几篇文章 不太理解

viewstate倒底起着什么样作用吗?

可否举个通俗易懂的例子?
回复次数:31
  • cjdxhc用户头像
  • cjdxhc
  • (cjdxhc)
  • 等 级:
#1楼 得分:2回复于:2010-07-16 07:31:06
一般服务器控件是默认使用viewstate的,在回发的时候可以自动保存当前填写的值。

也可以像Session那样 自己存取值,仅限于本页内使用,回发操作时可以使用!
C# code
ViewState["a"] = "dsds"; string a = ViewState["a"] as string;
#2楼 得分:2回复于:2010-07-16 07:57:13
http协议是无状态的连接。
那么,对于asp.net页面,如果点击一个button,激发postback产生另一个请求。
那么在处理第二个请求的时候如何知道以前的控件的状态(像textbox的值)呢?

这就用到了ViewState.它是用来维持控件对象的状态的。

如果想详细了解,最好读一下msdn的文章

Understanding ASP.NET View State
#3楼 得分:2回复于:2010-07-16 08:01:24
viewstate 你可以这样理解
把它看成是一全局变量 这样来理解
它是存储在页面上的 所以不能放太大值 不然会使页面体积变的很大
#4楼 得分:2回复于:2010-07-16 08:01:34
ViewState.它是用来维持控件对象的状态的。
#5楼 得分:2回复于:2010-07-16 08:49:44
基本上所有web控件都含有viewstate,viewstate的作用在于(viewstate为true时)刷新页面时,能够让页面上的数据仍能够保留下来,而不至于例如当你提交完数据后,而返回的页面却是空白的,显得那么的不和谐...
还有viewstate是基于客户端的,可以装载可序列化的对象,用法很简单,#1的用法的是对的
最后最好不要用viewstate装载太大数据的对象,这样当客户端与服务器进行交互的时候,才不至于使服务器承担太大的压力
#6楼 得分:2回复于:2010-07-16 08:57:37
mark...
#7楼 得分:2回复于:2010-07-16 09:00:42
自己去测试下

页面上放一个DropDownList,添加几项内容,再放一个Button。选中DropDownList某项后点击按钮回发,
DropDownList能保持选中项状态

然后禁用DropDownList的ViewState,再点按钮看下
#8楼 得分:2回复于:2010-07-16 09:23:10
页面回发时,保存页面的状态值!
#9楼 得分:2回复于:2010-07-16 09:31:33
引用 7 楼 amandag 的回复:

自己去测试下

页面上放一个DropDownList,添加几项内容,再放一个Button。选中DropDownList某项后点击按钮回发,
DropDownList能保持选中项状态

然后禁用DropDownList的ViewState,再点按钮看下

這個可以試 啥事得試了才知道效果
  • sandyxxx用户头像
  • sandyxxx
  • (一天到晚游泳的鱼)
  • 等 级:
#10楼 得分:2回复于:2010-07-16 09:34:01
就是保存页面控件状态 ,前台最好别用,影响访问速度
#11楼 得分:0回复于:2010-07-16 10:06:00
C# code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" EnableViewState="false"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server"> <asp:ListItem>2</asp:ListItem> <asp:ListItem>3</asp:ListItem> <asp:ListItem>4</asp:ListItem> </asp:DropDownList> <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> </form> </body> </html>


但是按照 按照高哥的意思做了

但为什么 还没保存着 droplist的状态啊

C# code
<select name="DropDownList1" id="DropDownList1"> <option value="2">2</option> <option selected="selected" value="3">3</option> <option value="4">4</option> </select>


这是返回的html
#12楼 得分:0回复于:2010-07-16 10:08:42
但为什么 还是保存着 droplist的状态啊

那个字打错了
#13楼 得分:2回复于:2010-07-16 10:14:21
页面级变量,占资源比session少些。只适用本页,如分页等可以用到
#14楼 得分:2回复于:2010-07-16 10:21:53
viewstate属于状态管理中的概念,可以存储数据状态,这样在刷新页面时就不容易丢失数据,当存储的数据比较大时会影响性能.viewstate可以从页面级,控件级或者应用程序级进行禁用
#15楼 得分:2回复于:2010-07-16 10:30:05
ViewState在客户端的保存形式,保存在一个ID为__VIEWSTATE的Hidden中,它的Value是使用Base64编码后的字符串。这个字符串实际上是一个对象序列化之后的结果。这个对象保存了整个页面的控件树的ViewState。可以使用一些工具将这个字符串进行解码查看其内容,比如ViewStateDecoder,ViewStateAnalyzer。
Page对客户端请求进行处理,在处理的过程中先是将客户端提交的_VIEWSTATE反序列化为对象,调用Control的相关方法给所有的控件装载数据,这些数据是上次请求结束后控件的状态数据。在请求结束之前调用Control的相关方法得到所有控件的被修改过的状态数据,之后Page将其进行序列化,并返回给客户端。在Control中又具体调用StateBag类的方法完成状态数据的加载和保存。


通过调用System.Web.UI.Control.TrackViewState()来跟踪ViewState的变化。
#16楼 得分:2回复于:2010-07-16 10:40:36
那是ASP.NET HiddenField 控件 在客户端的代码
像session
#17楼 得分:2回复于:2010-07-16 10:42:23
用于维持当前页面的状态的,以前经常用于排序,其他的功能好像没用过
#18楼 得分:2回复于:2010-07-16 10:44:18
viewstate页面级状态保持.作用域就整个页面........用法和session差不多
#19楼 得分:2回复于:2010-07-16 10:45:21
多给点分吧。嘻嘻
#20楼 得分:2回复于:2010-07-16 11:04:17
viewstate,让你开发网页就像开发桌面应用程序一样
但是我认为它会对你理解B/S造成困难
#21楼 得分:0回复于:2010-07-16 11:05:54
我认为这个放在请求头里或许会更好,如果可以的花
#22楼 得分:2回复于:2010-07-16 11:06:34
简单例子一个,TextBox 的 change事件

服务器端所有的事件都是通过提交表单来实现的

在服务器端将上一次的值和最新值做对比,来触发服务器端的事件,

那么上一次的值存在哪里? 存在ViewState里面,,那么ViewState存在哪里? 它是用来描术页面的历史状态

等信息,需要持久化下来,所以ViewState存在页面上,当然你重写某些方法,也可以存在数据库等地方,





  • zmcici用户头像
  • zmcici
  • (zmcici)
  • 等 级:
#24楼 得分:2回复于:2010-07-16 11:11:37
页面属于无状态的,要保持提交后的状态就用到了ViewState,比如说提交刷新下页面,文本框值还在,就用到了ViewState,你在试试html文本框,提交后啥都没有
  • journey_q用户头像
  • journey_q
  • (╰︶ ̄唯有沵)
  • 等 级:
#25楼 得分:0回复于:2010-07-16 11:11:48
如梦哥是不是老师?每次回答的那么详细感觉讲课~~~~
#26楼 得分:0回复于:2010-07-16 15:20:07
viewstate形象点说就是客服端和服务器端间数据传递的一个袋子,用的时候取出来,用完就放进去!
这样的原因在于服务器端不保存用户数据,每一次刷新页面客服端都要把信息再传回服务器端。还有就是viewstate中的数据是保存在客服端的。
#27楼 得分:0回复于:2010-07-16 15:22:24
保存状态
#28楼 得分:0回复于:2010-07-18 10:46:22
路过。。。
  • skydemo用户头像
  • skydemo
  • (北漂┅山城男儿)
  • 等 级:
#29楼 得分:0回复于:2010-07-18 11:41:01
用来存取页面的值 可以传递个需要的页面
#30楼 得分:0回复于:2010-07-18 11:50:50
总是迟到。。。
#31楼 得分:0回复于:2011-04-30 09:26:39
1、因为http协议是无状态连接,
2、服务端所有的事件都是通过表单提交的
3、viewstate用来存放页面刷新之前的表单值
4、放在后来使用。

datagrid分页,viewstate到底的作用:

1、记录当前的页号,也就是翻到第几页了。

2、当前DataGrid显示的数据的内容,比如DataGrid显示20行,那么只记录这20行的数据。

好像没有其他的作用了。


好像没有谁说过,它能对付海量数据的分页吧。


那要把ds记录到session里面才行的。

分享到:
评论

相关推荐

    viewstate详解

    viewstate详解,详细阐述了viewstate的用法及其作用。

    C#面试要点

    4.Global文件(Global.asax)在项目中起是什么作用? 5.了解WebService吗?什么是Web Service(SOAP、UDDI、WSDL)? 6.WebService有哪些关键技术和规则? 7.ASP.NET的缓冲机制是什么? 8.应用程序缓存是怎样实现的? 9....

    状态保存机制之ViewState概述及应用

    无状态的根本原因是:浏览器和服务器使用Socket通信,服务器将请求结果返回给浏览器后,会关闭当前Socket连接。而且服务器会在处理页面完毕后销毁页面对象。 ... 一个浏览者发出的请求都是由实现了IHttpHandler接口的...

    net学习笔记及其他代码应用

    他们的作用? 答:DataSet:数据存储器。 DataCommand:执行语句命令。 DataAdapter:数据的集合,用语填充。 19.ASP.net的身份验证方式有哪些?分别是什么原理? 答:10。Windwos(默认)用IIS...From(窗体)用帐户....

    Cookie,Session,Application的区别与应用

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等。下面分别介绍它们的用法和区别。 方法 信息量大小 作用域和保存时间 应用范围 保存位置

    BoardGameList-CleanArchi:示例代码探索SwiftUI和使用Clean Architecture结合

    查看触发器(带有用户输入或副作用) Interactor Interactor使用Workers ,存储库和更新ViewState ViewState更新(通过绑定) View原料药该项目使用开放的API 场景我们的应用程序包含2个场景。游戏清单第一个场景是...

    不可或缺的ASP.NET内置对象

    文章目录为什么学习ASP.NET内置对象一、Request对象1.属性2.方法二、Response对象1.方法2.属性三、Page对象1.属性2.事件四、ViewState对象保存数据取出数据总结ViewState的本质五、Session对象1.Session的原理2.属性...

    ASP.NET编程之道.part1.rar

    谬误19 TextBox控件依靠ViewState保存状态数据 谬误20 必须在页面添加元素才能使用CSS文件中的样式 第3篇 技术细节篇 第5章 必知必会的40个C#语言方面的技术细节 细节01 给C#代码加注释的意义 细节02 装箱和拆箱 ...

    基于Extjs的开源控件库ExtAspNet v3.1.9.rar

    ExtAspNet 是为了创建没有 JavaScript,没有 CSS,没有 UpdatePanel,没有 ViewState,没有 WebServices 的网站应用程序。  支持的浏览器: IE 7.0 、Firefox 3.6 、Chrome 3.0 、Opera 10.5 、Safari 3.0 授权...

    JavaServer Faces 2.0, The Complete Reference

    为了适应Ajax,在JSF 2.0中引入了一个全新的ManageBean的作用范围View Scope,此作用范围是在此视图存在时有用,当导航到新的视图时失效。正暗合了ajax当前页面局部更新的道理。 还有一些特性的加强和性能方面的...

    精通ASP.NET.4.0网络编程 part-2

    第1篇ASP.NET网络开发关键技术第1章ASP.NET网络开发基础(教学视频87分钟)1.1...作用1.2.2创建和使用母版页1.2.3将现有页面转换为母版页或内容页1.2.4嵌套母版页1.2.5从内容页访问母版页控件1.3主题1.3.1创建和使用主题...

    精通ASP.NET.4.0网络编程 part-1

    第1篇ASP.NET网络开发关键技术第1章ASP.NET网络开发基础(教学视频87分钟)1.1...作用1.2.2创建和使用母版页1.2.3将现有页面转换为母版页或内容页1.2.4嵌套母版页1.2.5从内容页访问母版页控件1.3主题1.3.1创建和使用主题...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    而是通过ashx的模式开发原始的动态网站,让学员明白“请求—处理—响应模型”、“Http协议、Http无状态”、“c#代码渲染生成浏览器端JavaScript”、“ViewState的作用”、“Session的原理”等这些基本而又重要的原理...

    asp.net知识库

    Server Side ViewState 在服务器端存贮ViewState (ASP.NET 2.0) VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP...

    亮剑.NET深入体验与实战精要2

    1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 1.3.9 字符串常见操作 21 1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象之门 27 1.4.1 继承——“子承父业” 28 1.4.2 委托——“任务书” 35 1.4.3 ...

    亮剑.NET深入体验与实战精要3

    1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 1.3.9 字符串常见操作 21 1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象之门 27 1.4.1 继承——“子承父业” 28 1.4.2 委托——“任务书” 35 1.4.3 ...

    ExtAspNet_v2.3.2_dll

    目标是创建没有ViewState,没有JavaScript,没有CSS,没有UpdatePanel,没有WebServices的Web应用程序。 支持的浏览器: IE 7.0+, Firefox 3.0+, Chrome 2.0+, Opera 9.5+, Safari 3.0+ 注:ExtAspNet基于一些开源...

    ASP.NET教学讲义,完整章节

    5.11 使用Viewstate保持窗体状态 99 5.12 把视图状态用作数据存储 100 5.13 利用查询字符串传递数据 101 5.14 利用隐藏的窗体字段传递数据 101 5.14 变量的作用域 102 第六章:站点设计 103 6.1 ASP.NET应用程序...

    ASP.NET的网页代码模型及生命周期

    第4章 ASP.NET的网页代码模型及生命周期 从本章开始,就进入了ASP.NET应用程序开发的世界。在了解了C#的结构,以及面向对象的概念后,就可以从面向对象的思想开发ASP.NET应用程序。在ASP.NET中,能够使用面向对象的...

    asp.net教学讲义

    5.11 使用Viewstate保持窗体状态 90 5.12 把视图状态用作数据存储 91 5.12.1 视图状态应用示例 92 5.13 利用查询字符串传递数据 92 5.14 利用隐藏的窗体字段传递数据 92 5.14 变量的作用域 93 第六章:站点设计 94 ...

Global site tag (gtag.js) - Google Analytics