Обратная передача ASP.NET и URL-адреса

2

У меня есть страница, которая требует, чтобы пользователь прошел несколько шагов, однако шаг выполняется на той же странице ASPX с отображением различных панелей.

Однако это требование, чтобы каждый шаг имел другой URL-адрес, это может быть просто как параметр строки запроса, например:

Шаг 1: /member/signup.aspx?step=1

Шаг 2: /member/signup.aspx?step=2

Шаг 3: /member/signup.aspx?step=3

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

Было бы лучше, если бы я мог изменить URL-адрес, который отображается пользователю, когда исходный запрос отправляется обратно пользователю, то есть пользователь нажимает "далее" на шаге 1, а затем выполняет некоторую обработку, а затем изменяет ответ так что пользователь видит URL-адрес второго шага, но без какого-либо перенаправления.

Будем очень благодарны за любые идеи.

  • 0
    Нужно ли, чтобы URL отображался по-другому, даже если он находится в процессе или только для целей возврата?
Теги:
url
http

6 ответов

0
Лучший ответ

Это будет немного сложнее, чем вы, вероятно, захотите, но вы можете добиться этого эффекта с помощью свойства PostBackUrl кнопки отправки. Я предполагаю, что каждая панель имеет свою кнопку "отправить", и все они могут использовать это свойство для "продвижения" процесса. Недостатком является то, что для доступа к представленным элементам управления вам необходимо использовать свойство Page.PreviousPage для доступа к любым элементам управления и их значениям.

2

Не могли бы вы преобразовать свои панели в шаги в Wizard?

0

Вы можете программно изменить свойство PostbackUrl вашей кнопки "Далее" на каждом Page_Load на основе значения строки запроса. Это немного странно, поскольку вы не сможете использовать стандартный обработчик событий для нажатия кнопки, и вам нужно будет использовать свойство PreviousPage страницы, чтобы получить данные с предыдущей вкладки.

Я бы назвал это требование. Зачем кому-то нужно прыгать на средний шаг? Если это случай отображения прогресса пользователю, сделайте это на странице, а не в URL-адресе.

0

Проверьте server.transfer

  • 0
    Server.Transfer ничем не отличается от Response.Redirect для того, что он хочет.
0

Вы можете реализовать форму или ссылку на URL, чтобы ваши URL-адреса оказались

/член/регистрация/шаг1/

/член/регистрация/step2/

/член/регистрация/step3/

Для этого используйте

Метод HttpContext.RewritePath, который означает, что вы можете переписать /member/signup/step 1/to/member/signup.aspx?step=1, например. Пример здесь.

Я бы также использовал шаблон PRG (post request get), чтобы каждая следующая ссылка помещала данные формы этого шага на сеанс затем перенаправляет пользователя вверх по правильному следующему URL-адресу. это гарантирует, что пользователь сможет перемещаться вперед и назад по шагам безопасно, а также URL останется неизменным во всех ваших сообщениях.

0

Требуется, чтобы каждый шаг имел другой URL, чем Response.Redirect - единственный вариант. Поскольку вы хотите избежать перенаправления, вы можете использовать IFrame, но URL-адрес IFrame не отображается пользователю в его браузере. Я думаю, что опция перенаправления является уродливой (как для SERVER, так и для CLIENT), так как в этом случае вы сначала публикуете на странице и получаете эту страницу. Лучшим решением является POST BACK с некоторым шагом отслеживания переменных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню