ASP.NET - Поддержка ViewState

Поддерживая ViewState (ViewState) объектов в веб-форме, вы можете сэкономить много времени на кодировании.

Поддержка ViewState (ViewState)

Когда форма в classic ASP подается, все значения формы будут стерты. Представьте себе, что вы подаете форму с大量 информации, а сервер возвращает ошибку. Вам нужно вернуться к форме и исправить информацию. Вы нажимаете кнопку "Назад", и что happens... все значения формы стираются, и вам нужно начать все сначала. Сайт не поддерживает ваш ViewState.

Когда форма в ASP .NET подается, форма появляется вместе со всеми значениями формы. Как это происходит? Это происходит из-за того, что ASP .NET поддерживает ваш ViewState. ViewState указывает на состояние страницы, когда она подается на сервер. Положив скрытый элемент в каждый <form runat="server"> контрол на странице, мы можем определить состояние страницы. Исходный код может выглядеть так:

<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
.....код
</form>

Поддержка ViewState является default setting для ASP.NET Web формы. Если вы не хотите поддерживать ViewState, включите инструкцию в верхней части страницы .aspx: <%@ Page EnableViewState="false" %> или добавьте свойство: EnableViewState="false" для любого контрола.

Пожалуйста, посмотрите на следующий файл .aspx. Он демонстрирует старый способ работы. Когда вы нажимаете кнопку "Подтвердить", значения формы исчезают:

<html>
<body>
<form action="demo_classicasp.aspx" method="post">
Ваше имя: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!")
End If
%>
</body>
</html>

Показать этот пример

Это новый способ ASP .NET. При нажатии на кнопку отправки значения формы не исчезают:

<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>
<html>
<body>
<form runat="server">
Ваше имя: <asp:TextBox id="txt1" runat="server" />
<asp:Button OnClick="submit" Text="Submit" runat="server" />
<p><asp:Label id="lbl1" runat="server" /></p>
</form>
</body>
</html>

Показать этот пример (Нажмите «Просмотреть исходный документ» в правой рамке, чтобы увидеть, как ASP .NET добавил скрытое поле в форму, чтобы поддерживать ViewState.)