Вопрос рег. ASP.NET ViewState - PullRequest
       3

Вопрос рег. ASP.NET ViewState

1 голос
/ 21 июля 2011

Я просматривал эту замечательную статью http://msdn.microsoft.com/en-us/library/ms972976.aspx, в которой говорится, что ViewState не отвечает за поля формы, чтобы сохранить их значения между постбэками.Таким образом, значения полей формы никогда не сохраняются в ViewState?

РЕДАКТИРОВАНИЕ: что я имею в виду, поля формы являются элементами управления ASP.NET, такими как TextBox, Dropdownlist и т. Д.

РЕДАКТИРОВАНИЕ: если пользователь вводит значение вASP.NET текстовое поле и отправить форму, новая страница все еще имеет текстовое поле с этим значением, я думал, что это из-за ViewState, но статья говорит, что это не так! *

Ответы [ 5 ]

2 голосов
/ 21 июля 2011

Как вы говорите, значения формы НЕ хранятся в состоянии просмотра.Причина того, что (например) текст элемента управления TextBox сохраняется между двумя обратными передачами, заключается в том, что он реализует IPostBackDataHandler -контракт и автоматически сопоставляет ключи в коллекции Request.Form с соответствующими свойствами объекта.контроль.Эти два механизма часто путают.

См. http://www.mikesdotnetting.com/Article/65/ViewState-form-fields-labels-and-Javascript для хорошего объяснения.

1 голос
/ 21 июля 2011

Текстовые поля не содержат своих значений в ViewState, поскольку их значения явно отправляются через HTTP POST (см. Request.Form) и восстанавливаются в элементе управления до Page_Load.

DropDownLists используют ViewState для хранения своего содержимого.

0 голосов
/ 21 июля 2011

То есть значения полей формы никогда не сохраняются в ViewState?

Как указано dknaack: Нет

Но вы также можете захотеть взглянуть на ControlStateпоскольку ViewState можно отключить.

0 голосов
/ 21 июля 2011

Точка зрения состояния состоит в том, чтобы отслеживать «изменения» в ваших веб-элементах управления.Как разработчик, вы обязаны убедиться, что «начальное» состояние ваших элементов управления воссоздается при каждой загрузке страницы.Затем механизм asp .net определяет изменение, которое произошло во время сценария обратной передачи, чтобы решить, какие события следует запускать на стороне сервера.

Для обзора того, как работает механизм обратной передачи ASP .Net и где вписывается Viewstateвзгляните на этот вопрос, который я изначально задавал на SO;

Как работает обратная передача?

0 голосов
/ 21 июля 2011

Только Asp.Net Control будет храниться в ViewState. Нет HTML полей.

Итак

<asp:TextBox id="tb1" runat="server" />

будет работать и

<input type="text" id="tb1" />

не будет работать.

...