Get-Post-Redirect-Get с ASP.NET

Как я могу реализовать Post-Redirect-Get шаблон с ASP.NET?

Нажатие кнопки выполняет некоторую обработку:


Пользователь нажимает кнопку, космический корабль запускается, веб-страница отображается повторно. Если пользователь нажимает F5, он получает предупреждение:

enter image description here

Решением проблемы является шаблон Post-Redirect-Get .

Каков метод, с помощью которого PRG может быть реализован в ASP. NET?


Вопрос сосредоточен вокруг следующих проблем:

  • как выполнить POST в место, которое не является исходной формой?
  • что происходит с ViewState , когда вы отправляете сообщение в форму, которая не считывает состояние просмотра?
  • что становится с ViewState , когда вы перенаправляете на «настоящий» aspx веб-форма?
  • ViewState принципиально несовместима с ASP.net Post-Redirect-Get?
  • является ли ASP.net принципиально несовместимой с Post-Redirect- -Get ?
  • как (т.е. какой код) вы перенаправляете на «настоящую» веб-форму aspx?
  • как (т.е. какой URL) вы перенаправляете на «настоящую» веб-форма aspx? В вопросе о родстве упоминается Response.Redirect (Request. RawUrl);
  • когда (т.е. в каком обработчике событий) вы перенаправляете на «настоящую» веб-форму aspx?
  • связанные вопросы поднимают вопросы как вы публикуете данные формы. Подразумевается, что HTML формы не могут использоваться - и все данные формы должны быть добавлены в строку запроса. Это правда? Если да, то почему? Если нет, то почему? Может ли браузер поместить данные формы в строку запроса?
  • в связанном вопросе упоминается Server.Transfer . Использование Server.Transfer совершенно неверно и никоим образом не решает проблему Post-Redirect-Get (поскольку нет Redirect ). Верно?
  • какое изменение кода должно произойти в файле aspx или aspx.cs для поддержки PRG? Предположительно, по крайней мере, {используя (var context1 = new SecondEntities ()) {} } Это работает, но по какой-то причине "не кажется правильным" ... Кто-нибудь знает какую-либо вескую причину не ...
    using (var context = new FirstEntities())
    {
       using (var context1 = new SecondEntities())
       {
       }
    }
    

    Это работает, но по какой-то причине "не кажется правильным" ... Кто-нибудь знает есть ли веская причина не использовать вложенные операторы using в структуре сущностей?

    Edit: Мой вопрос больше похож на тот, есть ли сценарий, в котором этот тип вложения может вызвать исключение или ошибку базы данных, а не если это рекомендуется из архитектурная точка зрения ...

7
задан Dean Kuga 21 March 2011 в 17:38
поделиться