私はそれを行うためのいくつかの方法を考えることができますが、私はあなたにこれをお勧めします。基本的な手順は次のとおりです。
JavaScriptを使用して、(クエリ文字列ではなく)引数として渡すグローバル変数を使用してモーダルダイアログを単独でポップアップします。
ポップアップページで、JavaScriptを使用してグローバル変数を非表示フィールドに設定してから、それ自体へのポストバックを開始します。
コードビハインドで、非表示フィールドからグローバル変数を取得し、セッションデータに格納します。
これで、グローバル変数がセッションスペースで使用できるようになりました。
注:jQuery1.7.1以降が必要です。
ステップ1コード:
これはポップアップリンクまたはボタンです。
<a id="popAspxWeb" href="#" onclick="javascript:PopPage('ModalPopup.aspx','galbal_variable_data');">Click to Popup</a>
ポップアップウィンドウを開くためのJavaScriptコードは次のとおりです。
<script type="text/javascript">
function PopPage(page, data) {
var result = window.showModalDialog(
page, // popup this page
data, // with this data
"dialogWidth:500px; dialogHeight:500px; resizable:no; status:no; center:yes");
}
</script>
ステップ2コード:
これらが必要になります。1つ目はデータを保存するために渡され、2つ目はページのポストバックにフラグを立てるかどうかを示します。
<input id="hidData" runat="server" type="hidden" />
<input id="postback" runat="server" type="hidden" value="false" />
これがjavascriptです:
<script type="text/javascript">
var data = ""; // global variable to store data from parent window.
$(document).ready(function() { //jQuery code to be executed when document is fully loaded.
args = window.dialogArguments; // obtain argument data and assign to global variable.
if ($("#postback").val().toString() == "false") { // if first visit to page
$("#hidData").val(data); // assign argument data from global variable to hidden field.
$("#postback").val("true"); // flag the form is posted back.
document.forms[0].submit(); // trigger form post.
}
});
function ReturnAndClose() { // you can optionally return data back to the parent window.
window.close(); // this closes modal pop up.
window.returnValue = document.getElementById('return_data').value; // this returns a value to parent window.
}
</script>
ステップ3コード:
ガルボル変数データにアクセスするためのコードbehine。
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
string data = this.hidData.Value;
this.Session["data"] = data;
}
}