- PR -

【ASP.NET】別Windowの開き方

投稿者投稿内容
haruka
常連さん
会議室デビュー日: 2003/12/09
投稿数: 36
投稿日時: 2003-12-10 11:48
遥@初心者といいます。 お世話になります。
ASP.NET(VB.NET)でWebアプリの開発をしております。

非常に初歩的ですが、質問をさせて下さい。
ASP.NETで、新規に別Windowを開きたいのですが、
方法がみつかりません。
クライアントスクリプト(JavaScript)でwindow.open
するしか方法がないのでしょうか?
※別windowは更新ボタンのツールバーのないWindow。


現在は、JavaScriptにより記述しているのですが、以下の
問題にぶちあたっています。

あるWindowから画面展開するボタンをクリックすることにより、
別Windowを開き、同時にセッション情報もわたしているのですが、
セッション情報を渡すより前に、新規Widnowが開いてしまい、
(つまりPage_Loadが走ってしまい)新規Windowでセッション情報
が取得できません。
ご教授願いませんでしょうか?

−環境−
ServerOS:Win2000、IIS5.0
Client:IE6.0
開発環境:VS.NET(VB.NET)
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-10 12:07
引用:

harukaさんの書き込み (2003-12-10 11:48) より:

あるWindowから画面展開するボタンをクリックすることにより、
別Windowを開き、同時にセッション情報もわたしているのですが、
セッション情報を渡すより前に、新規Widnowが開いてしまい、
(つまりPage_Loadが走ってしまい)新規Windowでセッション情報
が取得できません。


 どのようにしてセッション情報を渡そうとしていますか?新規に開いた画面のaspx.vbにて、Page.Sessionプロパティからアクセスできていますが。。。?
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-12-10 12:17
こんにちは。

引用:

harukaさんの書き込み (2003-12-10 11:48) より:

セッション情報を渡すより前に、新規Widnowが開いてしまい、
(つまりPage_Loadが走ってしまい)新規Windowでセッション情報
が取得できません。




サーバとクライアントの区別はついていますか?
ここを読んで頂ければ分かると思いますが、
セッションはサーバ側で保持しますので、クライアント側で別ウィンドウを開こうが影響は無いはずです。

Page_Loadでセッションを呼び出してあげれば取得できると思いますが・・・?
haruka
常連さん
会議室デビュー日: 2003/12/09
投稿数: 36
投稿日時: 2003-12-10 12:22
[/quote]
 どのようにしてセッション情報を渡そうとしていますか?新規に開いた画面のaspx.vbにて、Page.Sessionプロパティからアクセスできていますが。。。?
[/quote]

呼び元WindowのForm_Load時に新規Windowを開くJavaScriptをAttributeし、
検索ボタン_クリック時に、そのJavaScriptが実行される仕組みにしています。
と同時に、検索ボタン_クリック時にSession("key1")=セッション情報
という形でデータを渡しています。

呼ばれたWindowは、Page_Load時にセッション情報=Session("key1")という形で
受け取ろうとしています。


宜しくお願いします。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-12-10 12:32
引用:

harukaさんの書き込み (2003-12-10 12:22) より:

呼び元WindowのForm_Load時に新規Windowを開くJavaScriptをAttributeし、
検索ボタン_クリック時に、そのJavaScriptが実行される仕組みにしています。
と同時に、検索ボタン_クリック時にSession("key1")=セッション情報
という形でデータを渡しています。

呼ばれたWindowは、Page_Load時にセッション情報=Session("key1")という形で
受け取ろうとしています。




たぶん「Session("key1")=セッション情報」という処理の前に
新規ウィンドウが開いていると仰りたいんですよね?

渡すデータ量が少なければ、セッションで渡すのではなくて
window.openで指定したURLにパラメータを付けて送信してはどうでしょうか?
haruka
常連さん
会議室デビュー日: 2003/12/09
投稿数: 36
投稿日時: 2003-12-10 12:53
まゆりんさん、おっしゃる通りなんです。

セッション情報を渡す前に、新規Windowが開いてしまうので、
Page_Load時ではセッション情報を受け取れないんです。

ですので、セッション情報でデータを渡す方法をあきらめて、
@クエリー文字列で渡すか、
A呼び元から、新規Windowの隠しフィールドに値をセットする
しかないのかな、と。

でも、すっきりしないです。

ところで、ASP.NETで新規Windowを開く方法はないものでしょうか?

もしわかりましたらご教授ください。お願いします。

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-10 13:17
なるほどねぇ。そういう方法も、使っているけど、あるか。

 Attribute.Addでしなければならないですか?サーバまで戻ってきて、セッション情報を入れるなら、そのボタンのサーバサイドコードのクリックイベントで、

Page.Session(KEY) = INFORMATION
Page.RegisterStartupScript("OpenNewWindow", "<script language=""javascript"">window.open('URL', 'TARGET');</script>")

Attribute.Addは外してください。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-12-10 13:33
引用:

Jittaさんの書き込み (2003-12-10 13:17) より:

Page.Session(KEY) = INFORMATION
Page.RegisterStartupScript("OpenNewWindow", "<script language=""javascript"">window.open('URL', 'TARGET');</script>")

Attribute.Addは外してください。


あ・・・できるんですね・・・。
私もサーバサイドで出来ないものかと調べたんですが、
結局クライアント側に任せてしまっていました。
#ちゃんと調べておけば苦労しなかったのに・・・(後悔)。

またまた勉強させて頂きました。

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