- PR -

Server.Transfer以外のページ遷移

投稿者投稿内容
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-02-02 09:52
引用:


ただ、ふとまた分からなくなりました。
ある画面があって、その画面のボタンClickイベントで
画面内項目のチェックやDB登録処理をおこなったあと、
新規画面をOpenして、データを引き渡したい、というようなとき、
どのように記述すればよいのでしょうか。




DB登録処理後に
1)引き渡したいデータをSessionに保持
2)RegisterStartupScriptで、新規画面をOpenしてやるクライアントサイドスクリプトを
登録する。
で、いかがでしょうか。

[ メッセージ編集済み 編集者: NAL-6295 編集日時 2004-02-02 09:53 ]
無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2004-02-02 13:18
引用:

NAL-6295さんの書き込み (2004-02-02 09:52) より:

DB登録処理後に
1)引き渡したいデータをSessionに保持
2)RegisterStartupScriptで、新規画面をOpenしてやるクライアントサイドスクリプトを
登録する。
で、いかがでしょうか。



実は似たようなことで自分も問題を抱えていたのですが、それがこの一言をきっかけに一気に解決することができました。

NAL-6295さん、どうもありがとうございました。
ただ、その問題というのがちょっとこれとは違う問題
(フレームの別のページを、セッション変数に格納された値を見ながら制御する、という感じ)
なので、混乱させてしまうのもあれなので今回はソースは掲載しません。

要望があれば掲載しますが、どうしましょう?

[ メッセージ編集済み 編集者: 無月 重造 編集日時 2004-02-02 13:20 ]
ひろ
会議室デビュー日: 2004/01/29
投稿数: 13
投稿日時: 2004-02-02 18:34
無月さん、NAL-6295さん、書き込みありがとうございます。

初めに自己レスです。
いろいろお返事いただいておいて申し訳ないのですが、
Window.Open時の実装としては、一番初めの投稿内容で行おうと思います。
・POST用HTMLフォームを作成しておく
・上記HTMLフォームには
   1.引き渡すデータに対応するhidden項目
   2.別画面をOpenしてよいかどうか判断するためのフラグ用hidden項目
・HTMLコードで BODY onLoad 時の処理としてフラグ用hidden項目のチェック関数を
 記述
・ボタンClickイベントで画面項目チェックやDB処理をおこない、
 処理がおわったらフラグ用hidden項目にONをセット
 +データ引渡用hidden項目に必要値をセット
・HTMLのBody OnLoad 時にフラグ用hidden項目の値をチェックし、ONであれば
 window.Openし、HTMLフォームをsubmitする

理由としては、まぁ、クライアント数はたかが知れているのですが、
それでもサーバーのリソースはできるだけ使わないようにしようかと思いまして、
Session変数の使用は避けることにいたしました。


<<NAL-6295さん
RegisterStartupScriptはよく知らないのですが、
HTMLにJavaScriptが素で埋め込まれる、というイメージで思っています。
なので、F5(Reload)を押したりすると、無条件でwindow.openしてしまう気が...
それを言い出すと、実装しようかと考えている方法でも実はそうなんですが。

<<無月さん
このスレッドは結構閲覧が多いようですので
後学のため、よろしければサンプルソースとして
掲載お願いできますでしょうか。
無月 重造
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 67
投稿日時: 2004-02-03 09:57
では自分の抱えていた問題の解決の部分のコードを少しだけ

コード:
//ボタンをクリックしたときのイベント

private void Button_Click(object sender, System.EventArgs e) {
string targeturl;
/*途中省略*/
targeturl = url;//リンク先生成コードは省略
if(Session["State"] != null){ //コントロールに手が加えられていない
RegisterStartupScript("Check","<script>if(confirm('移動します。\\nよろしいですか?'))"+
"{window.parent.child2.location='"+targeturl+"';}</script>");
}else{
RegisterStartupScript("Check","<script>window.parent.child2.location='"+targeturl+"';</script>");
}
}



このようにif文でjavascriptを制御できるということを考えると、ASP.NETでできないことをjavascriptがサポートしている(逆か?)感じを受けました。
このことからASP.NET上でもjavascriptは重要な技術であるということを再認識させられた感じです。

[ メッセージ編集済み 編集者: 無月 重造 編集日時 2004-02-03 10:29 ]
ひろ
会議室デビュー日: 2004/01/29
投稿数: 13
投稿日時: 2004-02-04 08:27
無月さん、ソース掲載ありがとうございました。

私がASP.NETをまだまだ勉強できてないだけかもしれませんが、
JavaScriptはASP時代から変わらず、やはり必須なような気が私もします。
まさに 同感、という感じです。

まだまだ試行錯誤しながら開発していくと思いますが、
また壁にぶつかったときはご助力よろしくお願いします。m()m

スキルアップ/キャリアアップ(JOB@IT)