Есть ли способ сделать обратную передачу с новой строкой, которая не сбрасывает все элементы управления на странице по умолчанию? У меня есть страница с именем «default.aspx» с несколькими элементами управления флажками. Я могу проверить их все, что захочу, и они останутся постоянными (что означает, что они сохраняют свое контролируемое или неконтролируемое состояние) в postbacks на «default.aspx». Однако, если я вернусь к «default.aspx? Page = 2», все элементы управления вернутся к своему состоянию по умолчанию. Есть ли способ удержать их от этого?Сохраняйте элементы управления постоянными при изменении строки запроса
ответ
Следует помнить, что каждый раз, когда вы делаете новый ответ, вы работаете с совершенно новым экземпляром вашего класса страниц. Старый экземпляр был отброшен в тот момент, когда он был отправлен в веб-браузер. Имея это в виду, факт, что состояние может сохраняться между postbacks вообще, довольно удивительно. Многое должно произойти, чтобы все это синхронизировалось.
Одной из таких вещей является ViewState. ViewState - это специальный скрытый элемент ввода в форме вашей страницы. Когда вы запрашиваете свою страницу с новой строкой запроса, вы больше не используете POSTing это поле вида просмотра из формы. Вы больше не занимаетесь обратной почтой: это запрос на новую страницу. Нет данных POST из любой формы, поэтому данные ViewState отсутствуют, и ASP.Net не знает ни о чем, что вы могли бы сделать ранее.
Как вы отправляете сообщения, когда вы меняете запрос? Если вы используете контрольные элементы ASP.net (с помощью runat = "server"), то они должны сохраняться в представлении viewstate.
Joel правильно, что создается новый экземпляр класса Page, но это цель Viewstate, чтобы преодолеть апатриду HTTP-статуса.
Это ваша проблема тогда. Как работает viewstate - - и, следовательно, состояние постоянных элементов управления - это путем публикации страницы. Создав ссылку, вы обходите весь этот процесс. Попробуйте создать и настроить ASP и настроить его onclick на свой метод обработки вашего пейджинга –
I но метод, который я установил, никогда не вызывался. Я также попытался установить свойство «OnCheckedChanged» (для моих флажков) на метод, который изменил бы PostbackURL кнопки, но этот метод так и не получил, даже если я нажал галочку обеими руками. –
Я вижу страницы все время, у которых есть ссылка «страница 2», и отправляйте их обратно без перезагрузки текстовых полей или флажков. Думаю, я мог бы написать somethig в текстовый файл и прочитать текстовый файл при следующей загрузке страницы, но я не могу поверить, что так оно и делается. –
Если они на самом деле «отправляют назад», то они представляют собой формы, и запрос не может меняться. Ничего не мешает вам разрабатывать вашу страницу таким образом, но вы несете ответственность за компенсацию потери PostBacks. –
Вы имеете в виду, что я должен использовать метод POST, а не метод GET? Я могу это сделать, если у меня нет формы. Я ожидал, что элементы управления ASP.NET заменят необходимость в форме. Возможно, я должен был написать это в Pearl или PHP. Я определенно не продаюсь на .NET еще. –