我用vs2010做了个asp.net网页,运行后,查看源文件,发现了两句代码。

我用vs2010做了个asp.net网页,运行后,查看源文件,源文件代码为:

<!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><title>

</title></head>
<body>
<form method="post" action="Default.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMjA0OTM4MTAwNGRkfXCr/Ad14ZH5fYrMbz57EsEHrBbrE96v0q3+ji8rcsE=" />
</div>

<div class="aspNetHidden">

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKP0OieCgKM54rGBm/LRT7P04+xWAqUeR5Uy0iAG88L4rbkk40kI1BI5vel" />
</div>
<div>

<input type="submit" name="Button1" value="点击我" id="Button1" style="background-color:#3399FF;border-color:Red;" />

</div>
</form>
</body>
</html>

这些代码里有两句这样的代码:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMjA0OTM4MTAwNGRkfXCr/Ad14ZH5fYrMbz57EsEHrBbrE96v0q3+ji8rcsE=" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKP0OieCgKM54rGBm/LRT7P04+xWAqUeR5Uy0iAG88L4rbkk40kI1BI5vel" />
不知道这句代码是什么意思,在这里有什么作用。
谢谢。

是ASP.NET采用的一种状态保持方式:视图状态(ViewState)。我们在开发时会用到很多的服务器控件,当页面回发时,这些控件需要保持状态,.NET框架首先把相关控件的状态序列化成一个字符串,然后将其作为名为__VIEWSTATE的隐藏域的Value值发送到客户端。如果页面是第一次被请求,那么服务器控件也将是被第一次执行,名为__VIEWSTATE的隐藏域中只包含控件的默认信息,通常为空或者null。在随后的回送事件中,ViewState中就保存了服务器控件在签名回送中可用的属性状态。这样服务器控件就可以监视在当前被处理的回送事件发生之前的状态了。这些过程是由.NET框架负责的,对用户来说,执行.aspx页面就有了持续执行的效果。

最后谈一点自己的观点,这种视图状态机制是为了以前开发winform的程序员延续自己的开发习惯(控件+事件编程方式),节省开发时间,可以用一个页面做出一个多方交互型的复杂应用,他的出现是为了弥补复杂的webForm事件模型及生命周期,在快速开发的WebForm中它是不可或缺的;但在大型应用下ASP.NET MVC才是王道,在这里我们不需要视图状态机制,写出的代码也更清晰,更容易让人理解。追问

你说的真具体,不知道你是怎么知道的。我买的书里没有介绍啊。你是看的什么书可以给我介绍下吗?谢谢了。

追答

我一般都是看wrox红皮书,他们的书都是比较经典的。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-21
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMjA0OTM4MTAwNGRkfXCr/Ad14ZH5fYrMbz57EsEHrBbrE96v0q3+ji8rcsE=" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgKP0OieCgKM54rGBm/LRT7P04+xWAqUeR5Uy0iAG88L4rbkk40kI1BI5vel" />

这个代码是一个隐藏域,用来传值用的~
相似回答