- - PR -
[ASP.NET2.0]別ウィンドウの変数の参照の仕方
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-13 16:21
お初にお目にかかります。
Visual Web Developer 2005 Express Editonを使いまして Webを作成しているものですが、ウィンドウ間の値のやり取りの 仕方がわからなく質問をさせて頂きました。 例) ウィンドウ1.html ----------------- <script type="text/javascript"> <!-- var a function b(){ ---------- } //--> </script> とJavascriptで変数や関数を定義しまして、ウィンドウ2.htmlでボタンを押したときなどに、このウィンドウ1.htmlの変数aに任意の値を入れたり、関数を呼び出すには どうしたらいいのでしょうか?? ご教授お願い致します。 | ||||||||
|
投稿日時: 2006-07-13 20:50
その変数を、どのように表示したウインドウの、どこ(サーバ|クライアント)で知りたいですか?
具体例は・・・パターンが多いから、パターンが示された後で(誰かが答えてくれるでしょうぉぃ) | ||||||||
|
投稿日時: 2006-07-13 22:18
なので、クライアントだと思いますが... ASP.NET 2.0って書いてるし、うーん?? とりあえず、クライアント(Javascript)だと仮定して回答します。 呼び出し元は"opener"で指定します。 例にある変数であれば opener.a でアクセスできますし、関数であればopener.b(); で呼び出せます。 ウィンドウ2側がフレーム分けされている場合は、"top."を先頭に付けてください。 [以下追記] ああ、阿呆だ俺。 ウィンドウ1からウィンドウ2を開くとか全く書いて無いじゃんか。脳内補完しすぎだ。 えーと、Javascriptで呼び出す場合は、対象のwindowオブジェクトを取得する必要があります。 以下パターン例です。
[ メッセージ編集済み 編集者: でっち6号 編集日時 2006-07-14 03:55 ] | ||||||||
|
投稿日時: 2006-07-14 11:04
>両氏
本格的な開発は初めてなもので、サーバー、クライアントの知識が低くてですみません。 HTML、JavaScript、ASP.NETのコントロール、VBが出てきてごっちゃになっていてさっぱりの状況でした。仮のソースで少々質問させてください。 仮のソース Defalut.aspx <%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) End Sub </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> <script language=javascript> </script> </head> <body> <form id="form1" runat="server"> <div> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> </div> </form> </body> </html> 先ほどでっち6号さんが教えてくれたことは <head runat="server"> <title>無題のページ</title> <script language=javascript> </script> </head> この間(JavaScript)に書くことですよね? デザインでボタンをダブルクリックするとボタンのクリックイベント <script runat="server"> Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) End Sub </script> これが出来上がると思いますが、これはVBですよね? それではここで書いた変数の値を別ウィンドウに渡したい場合はどうすればいいのでしょうか?? | ||||||||
|
投稿日時: 2006-07-14 11:33
サーバ側から別フレームのウインドウを直接参照することは出来ないので JavaScriptでやることになると思います。 でっち6号さんの案のように 他のフレームのデータを書き換えるか、フレームそのものを再ロードさせる ような JavaScript のコードを RegisterStartupScript なんかを使って吐き出させてあげれば出来そうですね | ||||||||
|
投稿日時: 2006-07-14 18:35
すみません、実際にどうやってコーディングをすればいいのかわかりません。 VBの値をテキストなどに入れといて、それをscriptから参照するというイメージでしょうか? | ||||||||
|
投稿日時: 2006-07-15 01:26
たとえば、こういうことでしょうか。 Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Dim test As String = "VBで書いた変数" ClientScript.RegisterStartupScript(GetType(String), "start1", "<script language=""javascript"">window.opener.a='" & test & "';</script>") End Sub
| ||||||||
|
投稿日時: 2006-07-15 23:29
ウェブ アプリケーションでは、「サーバ」と「クライアント」に、それぞれプログラム コードがあります。
普通、サーバとクライアントで、お互いの変数の内容を知ることはできません。 これをするためには、サーバからは「デフォルト値」として埋め込んだり、スクリプトを動的に生成して埋め込んだりします。 クライアントからは、ポストバックしたり、リクエスト パラメータとして通知します。 複数のウインドウ間で値をやりとりする場合、サーバ側では普通、セッションを使います。Java では他の画面へポストすること(ポスト フォワード)ができますが、ASP.NET 1.x ではそれができません。ASP.NET 2.0 からは可能になっています。 ASP.NET 1.x では、他の画面にポストできないので、いったんセッション オブジェクトに格納してから Redirect するか、Transfer で遷移して参照します。 VWD は、サーバとクライアントのコードを別にできたと思います。 ですので、<script runat="server"> は使わないようにする方が、サーバ側のコードなのか、クライアント側のコードなのか、はっきりさせやすいと思います。 まず、サーバのコード、クライアントのコードを意識してください。2つのウインドウの関係と、それぞれのウインドウの C/S どちらで定義した変数の内容を、反対側の C/S どちらのコードで参照したいのか、はっきりさせてください。 2006-07-13 16:21 の投稿では、クライアント側で参照したいということのようでしたが、2006-07-14 11:04 ではサーバ側で参照したいと言っているように思えます。 |