Я привык к шаблону Post/Redirect/Get, я нахожу его очень хорошей процедурой, и мне также кажется, что я больше думаю о структуре страницы, а не о relying на событиях ASP.Net слишком часто.ASP.NET Wizard with Post/Redirect/Get
В настоящее время я пишу функцию мастера для сайта, хотя не использую элемент управления ASP.NET Wizard, но обрабатываю его более вручную с помощью MultiView. Как правило, в прошлом я ожидал, что типичный пользовательский интерфейс будет GET> POST> POST> POST и т. Д. Для каждого последующего шага мастера. Тем не менее, я сейчас думаю о том, чтобы использовать подход P/D/G, часто ли люди делают это со своими волшебниками?
Мое настоящее мышление заключается в том, что после того, как пользователь выполнит шаг, и они решили продолжить, мой объект сеанса, содержащий текущую информацию мастера, будет сохранен обратно на сеанс, а затем будет перенаправлен перенаправление GET на страницу мастера. Когда страница мастера загружается, объект Session проверяется, чтобы определить правильный шаг для отображения пользователю.
Я вижу две хорошие преимуществ с этим:
- , что происходит с обычной пользой P/R/G и устраняет Refresh проблемы, а также
- пользователя может перейдите от мастера и вернитесь к нему (если их сеанс все еще активен), и они будут приняты прямо к правильному шагу.
Неужели люди считают это более чистым? Есть ли очевидные недостатки? Я думаю, что я мог бы превратиться в циничного программиста и доверять ASP.Net, а жизненный цикл Postback меньше, но это не так, как если бы этот подход привел к гораздо большему количеству кода? Если бы я не реализовал его, мне пришлось бы записывать все проверки против обновления пользователем или попытки перейти к шагам, которые они не должны в любом случае.
Спасибо за ответ. Мастером, о котором идет речь, является процедура оплаты, они не смогут запускать несколько сеансов. Когда каждый postback происходит, чтобы завершить шаг, это предотвратит его повторение (поэтому они не могли сказать, попытайтесь выполнить платеж дважды на двух разных вкладках). – Kasaku 2010-12-03 15:48:04
Для обратной функциональности я разрешаю им вернуться к старым шагам, чтобы внести изменения в детали. Статус, который я удерживаю, будет отражать «последний статус», поэтому им будет разрешено посещать любой шаг, который ведет к этому шагу для внесения поправок в данные. – Kasaku 2010-12-03 15:49:22