В) как можно выполнить POST в месте, которое не является его первоначальной формой?
A) С PRG вы не POST на другую страницу, вы отправляете обратно на ту же страницу(см. диаграмму на странице википедии, на которую вы ссылаетесь.) Но ответ с этой страницы ДОЛЖЕН БЫТЬ ответом в 30 раз (обычно 302.)
Q) что происходит с ViewState при публикации в форме, котораяне читает состояние просмотра?
A) Состояние просмотра существует, когда вы выполняете POST, но там не будет состояния просмотра для новой страницы, на которой вы выполняете GET.
Q) что происходит с ViewState, когда вы перенаправляете на "настоящую" веб-форму aspx?
A) Как указано выше, больше нет состояния просмотра, перенаправляющего на страницу.
Q) ViewState принципиально несовместим с ASP.net?
A) ViewState не несовместим с ASP.NET.(В основном) бесполезно для P / R / G для рендеринга страницы, на которую вы перенаправлены.
Q) ASP.net принципиально несовместим с Post-Redirect - Get?
A) Нет - но вы не можете чрезмерно полагаться на использование одной страницы и поддержание всего состояния в viewstate, как указано выше.Тем не менее, ASP.MVC намного лучше отображает P / R / G
Q) как (т.е. какой код) вы перенаправляете на "настоящую" веб-форму aspx?
A)Response.Redirect ("new_page_you_are_redirecting_to.aspx") в методе bbLaunch_Click old_page_you_are_posting_from.aspx
Q) как (т.е. по какому URL-адресу) вы перенаправляете на "настоящую" веб-форму aspx?В вопросе об отношении упоминается Response.Redirect (Request.RawUrl);
A) См. Выше
Q), когда (т. Е. В каком обработчике событий) вы перенаправляете на «реальную» веб-форму aspx?
A) После того, как вы обработали нажатие кнопки, сохранили данные в БД (или в сеансе и т. Д.) И перед тем, как что-либо еще записать в поток ответа.
Q) связанные вопросы поднимают вопросы о том, как вы публикуете данные формы.Подразумевается, что формы HTML нельзя использовать - и все данные формы должны быть добавлены в строку запроса.Это правда?
A) Нет - нажатие кнопки в ASP.NET WebForms вернет страницу обратно.
В) Если так, то почему?Если нет, то почему?
А) Это проще, вот почему.Отображение двух страниц: first_page.asp и second_page.aspx.На First_page.aspx есть кнопка (наряду с другими веб-элементами управления ASP.NET, такими как текстовые поля и т. Д., Которые заполнил пользователь.) Когда они нажимают кнопку, выполняется POST для first_page.aspx.После обработки данных (которые, вероятно, находятся внутри viewstate, хотя это абстрагировано), вы перенаправляете пользователя на second_page.aspx, используя Response.redirect.Second_page.aspx может отображать то, что вы хотите.Если вы хотите (или должны) отображать пользовательский интерфейс, который похож на то, что было на first_page.aspx, включая элементы управления и то, что они вводили, вы должны сохранить его в сеансе, файл cookie, URL-адрес в качестве параметров строки запроса, чтобы установитьэти элементы управления на second_page.aspx.(Но вам может не потребоваться отображать на second_page.aspx что-либо похожее на first_page.aspx - поэтому здесь нет общего правила.)
Q) Может ли браузер поместить данные формы в строку запроса?
A) Да, если вы установите метод GET вместо POST.Вы не можете переопределить WebForms, чтобы сделать это, и это не требуется для PRG
Q) в связанном вопросе упоминается Server.Transfer.Использование Server.Transfer совершенно неправильно и никоим образом не решает проблему Post-Redirect-Get (потому что Redirect не существует).Правильно?
A) По существу
Q) какое изменение кода должно произойти в файле aspx или aspx.cs для поддержки PRG?Предположительно, по крайней мере, код должен быть изменен, чтобы публиковать где-то, кроме MyPage.aspx.
A) Код должен все еще отправлять обратно (как упомянуто выше.) Но тогда Mypage.aspx должен перенаправить нановая страница в обработчике кнопок.