Опубликовать / перенаправить / получить с предупреждением пользователю?

У меня есть приложение ASP.NET WebForms, которое обрабатывает почтовый запрос и отображает сообщение пользователю через предупреждение JavaScript (через _1 _...). В какой-то момент после этого выполняется клиентский код, обновляющий страницу, и, конечно же, я получаю «Чтобы отобразить эту страницу, Firefox должен отправить информацию, которая повторит любое действие (например, поиск или подтверждение заказа), которое было выполнено. ранее » или аналогичные в других браузерах.

Теперь я знаю о шаблоне Post / Redirect / Get, но если я перенаправляю сразу после сообщения - я не могу отобразить предупреждение JS. Есть ли способ отобразить предупреждение и выполнить перенаправление на стороне сервера? Я знаю, что могу добавить конкретную строку запроса для перенаправления URL-адреса, проверить ее при загрузке страницы и отобразить предупреждение, если оно присутствует, но это означает, что если перенаправленная страница обновляется - я снова получу это предупреждение, что нежелательно. Есть ли способ сделать это, чтобы не использовать сложные беспорядочные флаги?


person Yuriy Galanter    schedule 09.02.2015    source источник


Ответы (1)


TempData в ASP.NET MVC предназначен для перенаправления. Если вы сохраните там сообщение, вы сможете проверить его и отобразить после перенаправления. Если страница обновляется, значение не будет сохраняться, поэтому не будет отображаться во второй раз, дополняя шаблон PRG.

Я видел, как это реализовано как расширение для ActionResults, как в источнике веб-журнала FunnelWeb:

person Rob Bell    schedule 09.02.2015
comment
Я не думаю, что TempData доступен в приложении WebForms. Разве я ошибаюсь? - person Yuriy Galanter; 10.02.2015
comment
Извините - пропустил. Я думаю, что сеанс - единственный вариант! Я немного добавил к своему ответу. - person Rob Bell; 10.02.2015
comment
Спасибо. Обычно я стараюсь избегать сеанса для таких сценариев, но это кажется единственно возможным решением. - person Yuriy Galanter; 10.02.2015
comment
Спрячьте это в классе, чтобы почувствовать себя лучше - это то, что я всегда делаю. - person Rob Bell; 10.02.2015