HTTP是无状态的,因此在与服务器交互过程中容易丢失页面的变化状态,如文本框中输入的文字。
因此就出现了视图状态,这个是用来在页面上记录当前页面的一些更改,并且会回传给服务器。
————————————————————————————————————————————————————————
视图状态的编码在未加密的情况下是使用Base64编码。
————————————————————————————————————————————————————————
关闭视图状态可以设置ViewStateMode和Enableviewstate两个属性。
其中Enableviewstate属性用于设置是否开视图状态,当Enableviewstate设置为false时ViewStateMode不起作用。包括包含的子控件也
无法使用视图状态。
通常的做法是将Enableviewstate设置为TRUE ,通过ViewStateMode来控制视图状态。
————————————————————————————————————————————————————————
在浏览器中可以看到页面会多出如下信息:
<input name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" type="hidden" value="19C54D70"></input>
</input>
<input name="__EVENTVALIDATION" id="__EVENTVALIDATION" type="hidden" value="/wEdAAK5pKGcwK4Di9f7k3djdgCq1ygvqpoSpnnSq393pn9qz7aCZ+bN6M8EEFKXQ/7fqeD5XcioZFOY4694uKsCbO5a"></input>
这些就是网页的视图状态。
在ASP.NET中,一些控件必然会有一部分信息被记录在视图状态中,比如
<input id="Text1" type="text" runat="server" enableviewstate="false"
clientidmode="Static"/><br />
在其中已经设置了关闭视图状态,但在调试中可以看到传回的sender变量中对应的text1对象中IsTrackingViewState还是为true。相对于enableviewstate=true,只是其中ViewStata记录的信息会少一些。
——————————————————————————————————————————————————————