asp.net页面里__VIEWSTATEGENERATOR、__EVENTVALIDATION是做什么用的

秋的红果实 2015-11-11 11:04:07
服务器返送给浏览器的页面里,有这两个隐藏域,还有对应的数值。感觉,既然呈现给我们,似乎就有用,但不知道有什么用?
...全文
1444 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2015-11-17
  • 打赏
  • 举报
回复
谢 谢了……
秋的红果实 2015-11-17
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
如果你学习 asp.net 控件开发技术,就会了解这个其实是核心技术。 asp.net 要给程序员提供一个类似 winform 的自动保持所有控件(包括内部子控件)的成千上万状态的机制,不需要程序员自己来开发(例如自己再胡乱写什么隐藏域来保存和提交)状态维系机制。当页面提交(回发)时,例如GridView上的所有数据行、每一行内的所有自定义模板中的子控件等等,你会看到状态都自动重新填好了(哪怕你修改了GridView中某一行的模板中的一个Label的ForeColor属性),这就是靠着网页的ViewState保存着所有控件的状态值。而当用户在浏览器端点击一些操作,例如点击GridView中的“编辑”按钮,页面并不仅仅触发这个Button_Click事件,还要触发Grid的一个Edit事件,等等这类事件,也需要从客户端传给服务器端。 因此 PostData + Event 这两种机制和相关的数据,构成了 asp.net webform 的核心技术。而传统的 web 服务器上有数百个网站,所以asp.net 设计者不用 web 服务器来保存这些数据,而是在页面 html 文本中“夹带”这些信息,随着html的输出而输出,随着 <form /> 的提交而带回,把浏览器端页面当作这些数据的一个存储载体。
知道了,就是说只是携带了状态信息,没其他的,对开发者没用。既然这样,asp。net就应该彻底隐藏了他们。
  • 打赏
  • 举报
回复
asp.net 在15年前初始设计时,这个应该算是非常“伟大的”架构。它是针对企业web应用而设计的。 然而web编程到了2007年左右,web2.0已经开始成熟,重点赚到了 js 富客户端、结合 ajax 的技术开发上了。而 asp.net 没有把原有的所有控件都重构为纯 ajax 的,反而是放弃了这些东西。因此今天的 asp.net 跟 php甚至jsp相比,不到是更累赘(提供了至少两套互不兼容的开发机制),而且没有提供一点web前端框架的技术含量。 企业web应用开发,已经无法去强调什么 asp.net 的半点技术优势了(只能强调说现在招聘程序员,学不了多少东西的那些人,大多只会asp.net)。只是维护10年前的一些国营企业和政府的OA还比较多。
  • 打赏
  • 举报
回复
如果你学习 asp.net 控件开发技术,就会了解这个其实是核心技术。 asp.net 要给程序员提供一个类似 winform 的自动保持所有控件(包括内部子控件)的成千上万状态的机制,不需要程序员自己来开发(例如自己再胡乱写什么隐藏域来保存和提交)状态维系机制。当页面提交(回发)时,例如GridView上的所有数据行、每一行内的所有自定义模板中的子控件等等,你会看到状态都自动重新填好了(哪怕你修改了GridView中某一行的模板中的一个Label的ForeColor属性),这就是靠着网页的ViewState保存着所有控件的状态值。而当用户在浏览器端点击一些操作,例如点击GridView中的“编辑”按钮,页面并不仅仅触发这个Button_Click事件,还要触发Grid的一个Edit事件,等等这类事件,也需要从客户端传给服务器端。 因此 PostData + Event 这两种机制和相关的数据,构成了 asp.net webform 的核心技术。而传统的 web 服务器上有数百个网站,所以asp.net 设计者不用 web 服务器来保存这些数据,而是在页面 html 文本中“夹带”这些信息,随着html的输出而输出,随着 <form /> 的提交而带回,把浏览器端页面当作这些数据的一个存储载体。
秋的红果实 2015-11-17
  • 打赏
  • 举报
回复
散分了,大家接着
gengchenhui 2015-11-17
  • 打赏
  • 举报
回复
引用 5 楼 From_TaiWan 的回复:
[quote=引用 3 楼 sp1234 的回复:] 如果你学习 asp.net 控件开发技术,就会了解这个其实是核心技术。 asp.net 要给程序员提供一个类似 winform 的自动保持所有控件(包括内部子控件)的成千上万状态的机制,不需要程序员自己来开发(例如自己再胡乱写什么隐藏域来保存和提交)状态维系机制。当页面提交(回发)时,例如GridView上的所有数据行、每一行内的所有自定义模板中的子控件等等,你会看到状态都自动重新填好了(哪怕你修改了GridView中某一行的模板中的一个Label的ForeColor属性),这就是靠着网页的ViewState保存着所有控件的状态值。而当用户在浏览器端点击一些操作,例如点击GridView中的“编辑”按钮,页面并不仅仅触发这个Button_Click事件,还要触发Grid的一个Edit事件,等等这类事件,也需要从客户端传给服务器端。 因此 PostData + Event 这两种机制和相关的数据,构成了 asp.net webform 的核心技术。而传统的 web 服务器上有数百个网站,所以asp.net 设计者不用 web 服务器来保存这些数据,而是在页面 html 文本中“夹带”这些信息,随着html的输出而输出,随着 <form /> 的提交而带回,把浏览器端页面当作这些数据的一个存储载体。
知道了,就是说只是携带了状态信息,没其他的,对开发者没用。既然这样,asp。net就应该彻底隐藏了他们。[/quote] 服了。。。
秋的红果实 2015-11-12
  • 打赏
  • 举报
回复
自己顶起,没有人知道吗

62,074

社区成员

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

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

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

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