親ウィンドウの参照をshowmodaldailoge()
関数として送信しています
window.showmodaldialog("mypage.aspx", window, winsizeattributes)
クエリ文字列やセッション変数を使用したくないためです。のクライアント側で親ウィンドウの変数にアクセスできるようになりましたmypage.aspx
。サーバー側の親ウィンドウ変数にアクセスするにはどうすればよいmypage.aspx
ですPage_Load()
か?
runat="server" と id 属性を使用して非表示のクライアント側 HTML テキスト ボックスを作成し、
クライアント側の jquery 関数から隠しボックスに値を挿入します。
.FindControl("yourId") メソッドを使用して、ポストバック時にサーバー側の値を読み取ります。
注: リコールする変数ごとに新しい非表示フィールドを使用します。
モーダル コンテナーが非表示フィールドと同じページに存在する限り、モーダル ダイアログ コンテキスト内から値を読み取ることができます。
クエリ文字列やセッション変数を使用したくないので。.mypage.aspx のサーバー側、つまり Page_Load() で親ウィンドウ変数にアクセスするにはどうすればよいですか?
クエリ文字列またはセッション変数を使用しないと、これを行うことはできません。可能なオプションは、必要な変数を2番目のパラメーターでモーダルウィンドウに渡すことです(window
私が理解しているように、親ウィンドウにアクセスするためにそこに渡しましたが、それを避けることができます-window.opener
親ウィンドウを指すメソッドがありますクライアント側)、これらの値を取得し、JS を使用してフォームで送信します。それが完了するとRequest.Form["some_key"]
、mypage.aspx のコード ビハインドのようなことができるようになります。しかし、これは実際にはクエリ パラメータと同じですが、より複雑です。
ここでの問題は、Web のステートレスな性質のために、モーダル ウィンドウが親ウィンドウについて何も知らない asp.net に別の要求を生成することです。基本的に、親ウィンドウの変数は、親ウィンドウのリクエストが行われるだけでサーバー上のメモリから削除されます。asp.net ページのライフ サイクルを見てみましょう (たとえば、ここで)。異なるリクエスト間でデータを共有する通常の方法は、フォーム、クエリ パラメータ、セッション、および Cookie です。