- - PR -
Server.Transfer以外のページ遷移
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-01-29 00:44
ASP.NET初心者の ひろ と申します。
現在、ASP.NETでのページ遷移について、試行錯誤していて やり方が本当にあっているかどうか、分からなくなってきて しまいましたので、お知恵を拝借させてください。 (何か根本的な考え方の間違い等もあればご指摘いただければ 嬉しいです ^-^;) 基本的な方針としては ・POSTを使用 ← Server.Transfer/Context.Server.Transfer では F5で画面更新しようとすると呼びだし元の画面のPage_Loadから 処理が走る(アドレスバー表示も呼びだし元の画面のまま) ・ボタンクリックイベントで自画面の項目チェック,更新処理をおこなう ・その後画面遷移 と考えて作成しています。 実装は ・自分でHTMLのフォームを作成しておき、 (runat=server のフォームは action="XXXX.aspx" と設定しても 無効のため) ・ボタンClickイベントで 処理が正常終了したらフラグ(hidden で 設定しておく)をONにする ・POSTしたいデータをhidden項目にサーバーコードからセット (# HTML-hiddenは「サーバーコントロールとして実行」にしておく) ・HTMLのBODY onload で 処理が正常終了したかどうかのフラグを 見に行く処理を書き、OKならダミーフォームをsubmit し、画面遷移する のような感じで現在コーディングしています。 なんだかまわりくどい気がするのですが、もっとスマートな方法は ないものでしょうか。 あと、なんだか本をみたりしても Server.Transfer が多く書かれているのですが、 個人的には、、、、 なんとなく気持ち悪いのですが、皆さんはいかがでしょうか。 | ||||
|
投稿日時: 2004-01-29 08:40
Response.Redirect
を使ってみてはどうでしょう。 | ||||
|
投稿日時: 2004-01-29 09:11
へちまさん、書き込みありがとうございます。
Response.Redirect をつかうというのは、 データを遷移先に渡したいときにはQueryStringをつける、 というやり方ですよね? ex) Response.Redirect("XXXX.aspx?txt1=(値)&txt2=(値)"); ただし、これだと、アドレスバーを非表示にしていればともかく、 QueryStringが表示されてしまうので、できればあまり使いたくないのです。 わがまま言って申し訳ありません.. | ||||
|
投稿日時: 2004-01-29 09:37
まぁ、最悪、Session変数に値を格納してPOSTを偽装するという方法もありますが・・・ 多人数で使うのであったり、大量のデータ(といってもフォーム入力じゃあまり大量にもならないような気もするけど)を渡すとかいうのであればこの方法はお勧めできません。 まぁ、どれくらいのデータの遷移だかがわからないので、とりあえずこういう方法もあるよ、程度に考えておいてください。 #大量のデータをPOSTで送信するのであれば素直にtransferを使うことをお勧めします。 [ メッセージ編集済み 編集者: 無月 重造 編集日時 2004-01-29 09:38 ] | ||||
|
投稿日時: 2004-01-29 21:15
無月 さん、書き込みありがとうございます。
//まぁ、最悪、Session変数に値を格納してPOSTを偽装するという方法もありますが・・・ そうですね、Session変数で全部やってしまえばページ間が云々、といった 気を遣う必要はなくなりますよね。 //#大量のデータをPOSTで送信するのであれば素直にtransferを使うことをお勧めします。 transferもしくはQueryString使用 が一般的なやり方なんでしょうね。 あちこち見た印象では 同一ウィンドウ内でページ遷移時は Server.Transfer / Response.Redirect 新規WindowOpenするときは javascriptで window.Open("URL?txt1=(値)"); POST処理が言及されているのは少ないですね... | ||||
|
投稿日時: 2004-01-30 09:37
そもそも、POSTというのはSubmitに対して行われる処理ですけど ASP.NETでは、sbumitの対象として指定されるべきformのactionの値は自分自身ですから・・・他のウィンドウに対してPOSTするってのは本来の用途として外れてるので、言及されてないのではないかとおもいます [ メッセージ編集済み 編集者: 無月 重造 編集日時 2004-01-30 11:20 ] | ||||
|
投稿日時: 2004-01-30 21:03
Webフォームを新規作成で作ったときのフォーム初期設定が
runat=server(そして自分自身にPOST)ということを考えると、 私の考え方はイレギュラーみたいですね ただ、ふとまた分からなくなりました。 ある画面があって、その画面のボタンClickイベントで 画面内項目のチェックやDB登録処理をおこなったあと、 新規画面をOpenして、データを引き渡したい、というようなとき、 どのように記述すればよいのでしょうか。 サーバーサイドでチェックし、Server.Transfer()では 同一ウィンドウ内での遷移、になりますよね...? #どこかでなにか勘違いしてたらすいません.. | ||||
|
投稿日時: 2004-02-02 09:44
お返事が遅れてしまい申し訳ありませんでした
そのあたりに関してはJavaScriptとSessionを駆使して実装できそうなきもしますが… 申し訳ないです、ちょっと試したことがないのでこれという回答ができません(汗 | ||||
