Сохраняйте элементы управления постоянными при изменении строки запроса - PullRequest
0 голосов
/ 05 марта 2009

Есть ли способ сделать обратную передачу с новой строкой запроса, которая не сбрасывает все элементы управления на странице к их значениям по умолчанию? У меня есть страница с именем «default.aspx» с несколькими элементами управления флажок на нем. Я могу проверить их все, что захочу, и они останутся постоянными (то есть они сохранят свое проверенное или непроверенное состояние) на обратных передачах к «default.aspx». Тем не менее, если я отправлю обратно на «default.aspx? Page = 2», все элементы управления вернутся в состояние по умолчанию. Есть ли способ помешать им это сделать?

Ответы [ 2 ]

2 голосов
/ 05 марта 2009

Важно помнить, что каждый раз, когда вы делаете новый постбэк, вы работаете с новым экземпляром класса вашей страницы. Старый экземпляр был отброшен в тот момент, когда он был отправлен в веб-браузер. Имея это в виду, тот факт, что состояние может сохраняться между постбэками вообще, довольно удивителен. Многое должно произойти, чтобы все хорошо синхронизировалось.

Одной из таких вещей является ViewState. ViewState - это специальный скрытый элемент ввода в форме вашей страницы. Когда вы запрашиваете свою страницу с новой строкой запроса, вы больше не размещаете это поле представления состояния из формы. Вы вообще больше не делаете постбэк: это запрос на совершенно новую страницу. Нет данных POST из какой-либо формы, поэтому данные ViewState отсутствуют, и ASP.Net не имеет ни малейшего представления о том, что вы могли сделать ранее.

0 голосов
/ 05 марта 2009

Как вы отправляете сообщения, когда меняете строку запроса? Если вы используете элементы управления флажками ASP.net (с runat = "server"), то они должны быть сохранены с viewstate.

Джоэл прав, что создан новый экземпляр класса Page, но это цель Viewstate, чтобы преодолеть природу HTTP без состояния.

...