viewstate的作用倒底是什么?

挨踢直男 2010-07-16 01:10:03
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBwLcu/T4CgLA4sWlBwKo6+r3AQLJ9ZLmBQK5u6CKDwLy+u/iAQLbg+7IBBS0GkaH7wSVqcBtWB5O0wUg7Oyb" />


在 页面中老看到这种东西

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

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

可否举个通俗易懂的例子?
...全文
686 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
OObigO 2011-04-30
  • 打赏
  • 举报
回复
1、因为http协议是无状态连接,
2、服务端所有的事件都是通过表单提交的
3、viewstate用来存放页面刷新之前的表单值
4、放在后来使用。
zhengqian529 2010-07-18
  • 打赏
  • 举报
回复
总是迟到。。。
一切为了你 2010-07-18
  • 打赏
  • 举报
回复
用来存取页面的值 可以传递个需要的页面
babyxiong106 2010-07-18
  • 打赏
  • 举报
回复
路过。。。
journey_q 2010-07-16
  • 打赏
  • 举报
回复
如梦哥是不是老师?每次回答的那么详细感觉讲课~~~~
骑猪看海 2010-07-16
  • 打赏
  • 举报
回复
页面属于无状态的,要保持提交后的状态就用到了ViewState,比如说提交刷新下页面,文本框值还在,就用到了ViewState,你在试试html文本框,提交后啥都没有
夺命胖子 2010-07-16
  • 打赏
  • 举报
回复
简单例子一个,TextBox 的 change事件

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

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

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

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





jxjnice 2010-07-16
  • 打赏
  • 举报
回复
我认为这个放在请求头里或许会更好,如果可以的花
jxjnice 2010-07-16
  • 打赏
  • 举报
回复
viewstate,让你开发网页就像开发桌面应用程序一样
但是我认为它会对你理解B/S造成困难
xf198903 2010-07-16
  • 打赏
  • 举报
回复
多给点分吧。嘻嘻
xf198903 2010-07-16
  • 打赏
  • 举报
回复
viewstate页面级状态保持.作用域就整个页面........用法和session差不多
myhope88 2010-07-16
  • 打赏
  • 举报
回复
用于维持当前页面的状态的,以前经常用于排序,其他的功能好像没用过
迪迦凹凸曼 2010-07-16
  • 打赏
  • 举报
回复
那是ASP.NET HiddenField 控件 在客户端的代码
像session
wuyq11 2010-07-16
  • 打赏
  • 举报
回复
ViewState在客户端的保存形式,保存在一个ID为__VIEWSTATE的Hidden中,它的Value是使用Base64编码后的字符串。这个字符串实际上是一个对象序列化之后的结果。这个对象保存了整个页面的控件树的ViewState。可以使用一些工具将这个字符串进行解码查看其内容,比如ViewStateDecoder,ViewStateAnalyzer。
Page对客户端请求进行处理,在处理的过程中先是将客户端提交的_VIEWSTATE反序列化为对象,调用Control的相关方法给所有的控件装载数据,这些数据是上次请求结束后控件的状态数据。在请求结束之前调用Control的相关方法得到所有控件的被修改过的状态数据,之后Page将其进行序列化,并返回给客户端。在Control中又具体调用StateBag类的方法完成状态数据的加载和保存。


通过调用System.Web.UI.Control.TrackViewState()来跟踪ViewState的变化。
阿彪兄 2010-07-16
  • 打赏
  • 举报
回复
viewstate属于状态管理中的概念,可以存储数据状态,这样在刷新页面时就不容易丢失数据,当存储的数据比较大时会影响性能.viewstate可以从页面级,控件级或者应用程序级进行禁用
qjy5277 2010-07-16
  • 打赏
  • 举报
回复
页面级变量,占资源比session少些。只适用本页,如分页等可以用到
挨踢直男 2010-07-16
  • 打赏
  • 举报
回复
但为什么 还是保存着 droplist的状态啊

那个字打错了
挨踢直男 2010-07-16
  • 打赏
  • 举报
回复
<%@ 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的状态啊

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

</select>


这是返回的html
  • 打赏
  • 举报
回复
就是保存页面控件状态 ,前台最好别用,影响访问速度
enderboy520 2010-07-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 amandag 的回复:]

自己去测试下

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

然后禁用DropDownList的ViewState,再点按钮看下
[/Quote]
這個可以試 啥事得試了才知道效果
加载更多回复(10)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧