Наверное, очень простой вопрос для начинающих.
Представьте себе следующую ситуацию:
У меня есть страница ASP.NET с текстовым полем и кнопкой. В текстовое поле я ввожу, скажем, имя «Лавр» и нажимаю кнопку. Текстовое поле связано как параметр управления с источником данных, и этот источник данных извлекает содержимое «Laurel» из текстового поля для создания запроса, выбирает все заказы клиента Laurel и отправляет их обратно в браузер, где они отображаются в списке. (Вид сетки, например). Список длинный и имеет две страницы (в списке есть пейджер). Список находится на той же странице, где также находится текстовое поле. Итак, теперь я вижу в своем браузере страницу с текстовым полем (все еще содержащим текст «Laurel») и список с пейджером.
Теперь я могу сделать два действия:
- Введите имя «Харди» в текстовое поле и нажмите на кнопку: вышеуказанный цикл снова запускается, и отображаются заказы клиента Харди. Это нормально, и я хочу.
- Нажмите на элемент управления пейджером, чтобы отобразить вторую страницу заказов Лорел. Это работает, потому что у меня все еще есть "Лавр" в текстовом поле. Таким образом, при обратной передаче, инициируемой элементом управления пейджером, источник данных может снова извлечь «Laurel» как параметр запроса из текстового поля, выполнить запрос и доставить вторую страницу заказов в мой браузер. Это тоже хорошо.
На самом деле может быть третье действие:
- Я ввожу имя «Харди» в текстовое поле, затем передумал и решил, что хочу увидеть вторую страницу ордена Лорел. Таким образом, у меня есть «Харди» в текстовом поле, но я не нажимаю кнопку «Отправить», а вместо этого я нажимаю «Следующая страница» элемента управления пейджером, чтобы просмотреть вторую страницу. На сервере источник данных извлекает содержимое «Харди» из текстового поля, запускает запрос и затем пытается доставить вторую страницу Харди вместо заказов Лорел. Так что это не то, что я хочу. (Возможно, у Харди всего несколько заказов, недостаточно для двух страниц. Источник данных может сказать мне тогда «Ничего не найдено», потому что на второй странице для Харди ничего нет.)
(То, что я имею в виду, можно также увидеть здесь на stackoverflow: введите что-то в поле поиска, например «ASP.NET» и нажмите клавишу ввода, вы получите длинный список результатов со многими страницами. Затем введите другой термин в окне поиска, например, «PHP», но не нажимайте ввод, вместо этого нажмите на странице 2 в элементе управления пейджером внизу страницы. Произошла обратная передача (которая также передает новое содержимое «PHP» окна поиска, я угадайте), отображается вторая страница с ключевым словом «ASP.NET», и окно поиска больше не содержит «PHP», а вместо этого снова «ASP.NET».)
Вопрос сейчас: как мне избежать подобной ситуации? Моя основная идея такова: мне нужно восстановить старое значение "Laurel" в текстовом поле, чтобы обеспечить правильное значение параметра для запроса источника данных, и мое старое значение "Laurel" должно храниться "где-то" (на сервере? Где на сервере? на клиенте - если на клиенте, спрятаны на странице или в cookie или ...?). Существуют ли стандартные шаблоны для решения этого требования? Или я не в том направлении?
Заранее спасибо!