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倒底起着什么样作用吗? 可否举个通俗易懂的例子? 对我有用[0] 丢个板砖[0]引用举报管理TOP 回复次数: 31 cjdxhc (cjdxhc) 等 级: #1楼 得分:2回复于:2010-07-16 07:31:06 一般服务器控件是默认使用viewstate的,在回发的时候可以自动保存当前填写的值。 也可以像Session那样 自己存取值,仅限于本页内使用,回发操作时可以使用! C# code ViewState[ " a " ] = " dsds " ; string a = ViewState[ " a " ] as string ; 对我有用[0] 丢个板砖[0]引用举报管理TOP 精华推荐: 请教msdn上关于拆箱的解释 findcaiyzh (秋心) 等 级: #2楼 得分:2回复于:2010-07-16 07:57:13 http协议是无状态的连接。 那么,对于asp.net页面,如果点击一个button,激发postback产生另一个请求。 那么在处理第二个请求的时候如何知道以前的控件的状态(像textbox的值)呢? 这就用到了ViewState.它是用来维持控件对象的状态的。 如果想详细了解,最好读一下msdn的文章 Understanding ASP.NET View State 对我有用[0] 丢个板砖[0]引用举报管理TOP 精华推荐: 【讨论】★★★★★难度!!如何在WINDOWS启动的时候,用户准备输入密码的时候,运行并且显示程序? q107770540 ( Tim [兔子党执行督察]) 等 级: 3 更多勋章 #3楼 得分:2回复于:2010-07-16 08:01:24 viewstate 你可以这样理解 把它看成是一全局变量 这样来理解 它是存储在页面上的 所以不能放太大值 不然会使页面体积变的很大 对我有用[0] 丢个板砖[0]引用举报管理TOP 精华推荐: [攒分贴]每日小知识 wwfgu00ing (wwf) 等 级: #4楼 得分:2回复于:2010-07-16 08:01:34 ViewState.它是用来维持控件对象的状态的。 对我有用[0] 丢个板砖[0]引用举报管理TOP 精华推荐: 请大家说说Linq的缺点 charliezqj (charliezqj) 等 级: #5楼 得分:2回复于:2010-07-16 08:49:44 基本上所有web控件都含有viewstate,viewstate的作用在于(viewstate为true时)刷新页面时,能够让页面上的数据仍能够保留下来,而不至于例如当你提交完数据后,而返回的页面却是空白的,显得那么的不和谐... 还有viewstate是基于客户端的,可以装载可序列化的对象,用法很简单,#1的用法的是对的 最后最好不要用viewstate装载太大数据的对象,这样当客户端与服务器进行交互的时候,才不至于使服务器承担太大的压力 对我有用[0] 丢个板砖[0]引用举报管理TOP 精华推荐: 如何做到让程序自学习,让程序有点思维呢 luli668 (KAKA) 等 级: #6楼 得分:2回复于:2010-07-16 08:57:37 mark... 对我有用[0] 丢个板砖[0]引用举报管理TOP amandag (高歌) 等 级: 2 更多勋章 #7楼 得分:2回复于:2010-07-16 09:00:42 自己去测试下 页面上放一个DropDownList,添加几项内容,再放一个Button。选中DropDownList某项后点击按钮回发, DropDownList能保持选中项状态 然后禁用DropDownList的ViewState,再点按钮看下 对我有用[0] 丢个板砖[0]引用举报管理TOP bobo_msdn (bobo_msdn) 等 级: #8楼 得分:2回复于:2010-07-16 09:23:10 页面回发时,保存页面的状态值! 对我有用[0] 丢个板砖[0]引用举报管理TOP enderboy520 (很努力的老衲) 等 级: #9楼 得分:2回复于:2010-07-16 09:31:33 引用 7 楼 amandag 的回复: 自己去测试下 页面上放一个DropDownList,添加几项内容,再放一个Button。选中DropDownList某项后点击按钮回发, DropDownList能保持选中项状态 然后禁用DropDownList的ViewState,再点按钮看下 這個可以試 啥事得試了才知道效果 对我有用[0] 丢个板砖[0]引用举报管理TOP sandyxxx (一天到晚游泳的鱼) 等 级: #10楼 得分:2回复于:2010-07-16 09:34:01 就是保存页面控件状态 ,前台最好别用,影响访问速度 对我有用[0] 丢个板砖[0]引用举报管理TOP aspwebchh (aspwebchh) 等 级: #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 对我有用[0] 丢个板砖[0]引用举报管理TOP aspwebchh (aspwebchh) 等 级: #12楼 得分:0回复于:2010-07-16 10:08:42 但为什么 还是保存着 droplist的状态啊 那个字打错了 对我有用[0] 丢个板砖[0]引用举报管理TOP qjy5277 (qjy5277) 等 级: #13楼 得分:2回复于:2010-07-16 10:14:21 页面级变量,占资源比session少些。只适用本页,如分页等可以用到 对我有用[0] 丢个板砖[0]引用举报管理TOP wybxs2006 (飞虎) 等 级: #14楼 得分:2回复于:2010-07-16 10:21:53 viewstate属于状态管理中的概念,可以存储数据状态,这样在刷新页面时就不容易丢失数据,当存储的数据比较大时会影响性能.viewstate可以从页面级,控件级或者应用程序级进行禁用 对我有用[0] 丢个板砖[0]引用举报管理TOP wuyq11 (人生如梦) 等 级: 3 21 3 更多勋章 #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的变化。 对我有用[0] 丢个板砖[0]引用举报管理TOP lordbaby (lordbaby) 等 级: #16楼 得分:2回复于:2010-07-16 10:40:36 那是ASP.NET HiddenField 控件 在客户端的代码 像session 对我有用[0] 丢个板砖[0]引用举报管理TOP myhope88 (平凡男孩) 等 级: #17楼 得分:2回复于:2010-07-16 10:42:23 用于维持当前页面的状态的,以前经常用于排序,其他的功能好像没用过 对我有用[0] 丢个板砖[0]引用举报管理TOP xf198903 (其实还行) 等 级: #18楼 得分:2回复于:2010-07-16 10:44:18 viewstate页面级状态保持.作用域就整个页面........用法和session差不多 对我有用[0] 丢个板砖[0]引用举报管理TOP xf198903 (其实还行) 等 级: #19楼 得分:2回复于:2010-07-16 10:45:21 多给点分吧。嘻嘻 对我有用[0] 丢个板砖[0]引用举报管理TOP jxjnice (jxj) 等 级: #20楼 得分:2回复于:2010-07-16 11:04:17 viewstate,让你开发网页就像开发桌面应用程序一样 但是我认为它会对你理解B/S造成困难 对我有用[0] 丢个板砖[0]引用举报管理TOP jxjnice (jxj) 等 级: #21楼 得分:0回复于:2010-07-16 11:05:54 我认为这个放在请求头里或许会更好,如果可以的花 对我有用[0] 丢个板砖[0]引用举报管理TOP pengyi_205 (坚决不灌水) 等 级: #22楼 得分:2回复于:2010-07-16 11:06:34 简单例子一个,TextBox 的 change事件 服务器端所有的事件都是通过提交表单来实现的, 在服务器端将上一次的值和最新值做对比,来触发服务器端的事件, 那么上一次的值存在哪里? 存在ViewState里面,,那么ViewState存在哪里? 它是用来描术页面的历史状态 等信息,需要持久化下来,所以ViewState存在页面上,当然你重写某些方法,也可以存在数据库等地方, 对我有用[0] 丢个板砖[0]引用举报管理TOP zmcici (zmcici) 等 级: #24楼 得分:2回复于:2010-07-16 11:11:37 页面属于无状态的,要保持提交后的状态就用到了ViewState,比如说提交刷新下页面,文本框值还在,就用到了ViewState,你在试试html文本框,提交后啥都没有 对我有用[0] 丢个板砖[0]引用举报管理TOP journey_q (╰︶ ̄唯有沵) 等 级: #25楼 得分:0回复于:2010-07-16 11:11:48 如梦哥是不是老师?每次回答的那么详细感觉讲课~~~~ 对我有用[0] 丢个板砖[0]引用举报管理TOP qianjide (Tkee) 等 级: #26楼 得分:0回复于:2010-07-16 15:20:07 viewstate形象点说就是客服端和服务器端间数据传递的一个袋子,用的时候取出来,用完就放进去! 这样的原因在于服务器端不保存用户数据,每一次刷新页面客服端都要把信息再传回服务器端。还有就是viewstate中的数据是保存在客服端的。 对我有用[0] 丢个板砖[0]引用举报管理TOP xupeihuagudulei (希望父母身体永远健康) 等 级: #27楼 得分:0回复于:2010-07-16 15:22:24 保存状态 对我有用[0] 丢个板砖[0]引用举报管理TOP babyxiong106 (诸葛不亮) 等 级: #28楼 得分:0回复于:2010-07-18 10:46:22 路过。。。 对我有用[0] 丢个板砖[0]引用举报管理TOP skydemo (北漂┅山城男儿) 等 级: #29楼 得分:0回复于:2010-07-18 11:41:01 用来存取页面的值 可以传递个需要的页面 对我有用[0] 丢个板砖[0]引用举报管理TOP zhengqian529 (肥肥) 等 级: #30楼 得分:0回复于:2010-07-18 11:50:50 总是迟到。。。 对我有用[0] 丢个板砖[0]引用举报管理TOP fanyong511 (寂寞高手) 等 级: #31楼 得分:0回复于:2011-04-30 09:26:39 1、因为http协议是无状态连接, 2、服务端所有的事件都是通过表单提交的 3、viewstate用来存放页面刷新之前的表单值 4、放在后来使用。 datagrid分页,viewstate到底的作用: 1、记录当前的页号,也就是翻到第几页了。 2、当前DataGrid显示的数据的内容,比如DataGrid显示20行,那么只记录这20行的数据。 好像没有其他的作用了。 好像没有谁说过,它能对付海量数据的分页吧。 那要把ds记录到session里面才行的。 对我有用[0] 丢个板砖[0]引用举报管理TOP