2009-03-05 8 views
0

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

ответ

2

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

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

+0

Я вижу страницы все время, у которых есть ссылка «страница 2», и отправляйте их обратно без перезагрузки текстовых полей или флажков. Думаю, я мог бы написать somethig в текстовый файл и прочитать текстовый файл при следующей загрузке страницы, но я не могу поверить, что так оно и делается. –

+0

Если они на самом деле «отправляют назад», то они представляют собой формы, и запрос не может меняться. Ничего не мешает вам разрабатывать вашу страницу таким образом, но вы несете ответственность за компенсацию потери PostBacks. –

+0

Вы имеете в виду, что я должен использовать метод POST, а не метод GET? Я могу это сделать, если у меня нет формы. Я ожидал, что элементы управления ASP.NET заменят необходимость в форме. Возможно, я должен был написать это в Pearl или PHP. Я определенно не продаюсь на .NET еще. –

0

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

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