ASP.NET Web Forms - Сохранение ViewState


Сохраняя ViewState объектов в вашей веб-форме, вы можете сэкономить много работы по написанию кода.


Сохранение ViewState

В классическом ASP, когда форма отправляется, все значения формы очищаются. Предположим, вы отправили форму с большим количеством информации, а сервер вернул ошибку. Вам нужно вернуться к форме, чтобы исправить информацию. Вы нажимаете кнопку «Назад», и что происходит... все значения формы очищаются, и вам приходится начинать всё заново! Сайт не сохранял ваше состояние 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 — это настройка по умолчанию для ASP.NET Web Forms. Если вы не хотите сохранять ViewState, включите директиву <%@ Page EnableViewState="false" %> в начало страницы .aspx или добавьте атрибут EnableViewState="false" к любому элементу управления.

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

Пример

<html>
<body>

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

</body>
</html>

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

Ниже приведен новый способ ASP.NET. Когда вы нажимаете кнопку отправки, значения формы не исчезнут:

Пример

Нажмите "View Source" в правой панели примера, и вы увидите, что ASP.NET добавил скрытое поле в форму для поддержания ViewState.

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

Показать пример »
Другие расширения