■68263 / ) |
Re[3]: Server.Transferによる遷移とAjaxイベント |
□投稿者/ WebSurfer (68回)-(2013/10/04(Fri) 12:55:43)
|
■No68257 (fumo さん) に返信 > ■No68247 (WebSurfer さん) に返信 > > 返信が遅れまして申し訳ありません。 > > 画面間のデータの受け渡しをするために、遷移後の画面からPreviousPageを利用して遷移前の画面から値を取得しています。 > 画面の項目が多くなるので、セッションやクエリストリングに一つずつ格納して…といった方式はとりたくないと考えております。
以下のケース(UpdatePanel を配置したページで Server.Transfer を使ってい る)とは違いますよね? このケースでも 404 エラーになるそうです。もし、 このケースであれば、Response.Redirect を使う以外に現実的な解決策はありま せん。
No, you cannot call Server.Transfer on an ASP.NET AJAX enabled page http://msmvps.com/blogs/luisabreu/archive/2007/10/10/no-you-cannot-call-server-transfer-on-an-asp-net-ajax-enabled-page.aspx
上記のケースとは違って、遷移先のページで UpdatePanel を使っているという ことですか? 例えば、以下のページの図16.2 で、UpdatePanel を使っている のは sampleB.aspx で、そのページを構築する際 asmpleA.aspx のデータを使用 しているということですか?
そうだとすると、最初に sampleB.aspx から html ソースがブラウザに送信され た後で、ブラウザが sampleB.aspx に非同期要求を出した時には sampleA.aspx はサーバーのメモリには存在しないので、sampleB.aspx(これは非同期要求を受 けると再度サーバーのメモリにロードされます)で、asmpleA.aspx のデータを取 得できないのでエラーになるということではないかと思います(想像です)。
ただ、一度通常のポストバック(同期要求と理解)が発生するとエラーが出ないの はつじつまが合わないですが。
セッションやクエリ文字列を使わない理由は、単にめんどくさいからということ のようですが、その程度の理由しかないのであれば、普通にセッション等に前画 面のデータを保持し Response.Redirect で遷移することをお勧めします。
ASP.NET Web Forms アプリでの画面遷移は Response.Redirect を使うのが基本で す。Server.Transfer をつかうのはよほどの理由(例えば、GetLastError メソッ ドを利用してのエラー処置とか、SEO 対策とか)がない限り止めた方が無難です。
Web アプリケーション開発では、Post/Redirect/Get (PRG) パターンを使うこと が基本ということもありますし。
Post/Redirect/Get http://en.wikipedia.org/wiki/Post/Redirect/Get
|
|