Внутри что значение TexBox отправлено обратно? ViewState или опубликовать данные? - PullRequest
1 голос
/ 03 декабря 2009

В одной статье, которую я читал на ViewState, я увидел предложение, в котором говорилось, что я не должен ошибаться, полагая, что значение TextBox хранится во ViewState; хранится в данных PostBack.

Отсюда я понимаю, что когда я отправляю обратно веб-форму, значения элементов управления вводом сохраняются в теле HTTP-запроса. Не в Viewstate. Но, насколько я знаю, значения ViewState хранятся в скрытом поле с именем __VIEWSTATE в любом случае.

Значит ли это, что значение __VIEVSTATE не публикуется в теле запроса HTTP POST в качестве данных обратной передачи? Звучит для меня чепуха.

Другими словами, если я скажу, что механизм ViewState для такого scenerio работает следующим образом, я правильно понимаю или что-то пропускаю:

  1. Вы вводите значение в пустое поле TextBox и отправляете страницу

  2. Значение текстового поля отправляется обратно в тело POST HTTP-запроса. Ничего внутри __VIEWSTATE на данный момент из TextBox

  3. На стороне сервера TextBox создается со значением по умолчанию для метода OnInit страницы

  4. Свойство TrackChange ViewState имеет значение true.

  5. Загруженные данные обратно TextBox загружены. Поскольку оно отличается от значения по умолчанию для TextBox (потому что пользователь что-то ввел), ViewState этого текстового поля помечается как DIRTY.

  6. Новое значение текстового поля записывается в скрытое поле __VIEWSTATE

  7. С этого момента __VIEWSTATE hiddenfeild содержит последнее заданное значение TextBox

  8. Страница отправляется в браузер пользователя со скрытым полем __VIEWSTATE. Но на этот раз содержит последнее введенное пользователем значение, которое будет готово к обработке

Спасибо, ребята!

Бурак Оздоган

1 Ответ

0 голосов
/ 04 декабря 2009

ViewState - это скрытый ввод на странице, который позволяет серверу поддерживать состояние для нескольких запросов на одну и ту же страницу. ViewState поддерживается сервером, поэтому он остается прежним, если только сервер не изменяет его. ViewState - это просто способ общения сервера с самим собой.

В вашем примере вы удивляетесь, почему при первом вводе значения в TextBox в ViewState ничего не появляется. Причина в том, что сервер еще ничего не положил туда. Когда значение вашего TextBox достигнет сервера в первый раз, сервер поместит значение в ViewState, чтобы оно могло отслеживать его по всем последующим запросам.

В последующих запросах значение TextBox будет закодировано в ViewState и отправлено обратно на сервер в виде данных POST.

...