【ASP.NET・C#】別タブ・別ウィンドウへの遷移 -javascript-
【内容】
aspx・C#を使った開発で子画面を利用した場合の選択肢についてメモ
参考:
aspxのサーバコントロールにはonclickでjavascriptは設定できない、サーバ側での処理となってしますため、別途設定が必要
Buttonコントロールクリック時のJavaScript処理|ソフトウエア開発部(システム開発・システム設計 株式会社アイロベックス|東京都新宿区)
ClientScriptManagerの使い方atamoco.boy.jp
①クライアント側でjavascriptを使用する
■メモ
1.webコントロールの部品を使用する場合
aspxの部品(webコントロールとしてサーバ側で処理されるのがデフォルトのため)は、
OnClientClickプロパティで明示的にクライアントで処理するように変更する必要がある
2.別ウィンドウとタブを明確に分ける場合
引数にてサイズ指定をすると、別ウィンドウで表示
指定しないと、別タブで表示
window.open(url, "新規"); //タブで表示 window.open(url, "新規",height="200",wieth="200"); //別ウィンドウで表示
②サーバ側でjavascriptを使用する
■メモ
1.クライアントとの使い分け
遷移先でに渡すパラメータを生成するのにサーバ側での処理が必要な場合にはサーバ処理で行うべき
・遷移先にセッションIDを渡す
・権限などを判断してから、javascriptの制御を行いたい
参考ソース
aspx 遷移元
<script type="text/javascript"> function windowOpen() { var par = document.getElementById("TextBox1").value; var url = "windowC.aspx?par=" + par; window.open(url, "新規"); //タブで表示 // window.open(url, "新規",height="200",wieth="200"); //別ウィンドウで表示 } </script> </head> <body> <form id="form1" runat="server"> <div> </div> <a href="javascript:void(0);" onclick="windowOpen()">クライアント(html)(cliant)</a> <asp:Button ID="Button1" runat="server" Text="クライアント(webコントロール)" OnClientClick="windowOpen();" /> <asp:Button ID="Button2" runat="server" Text="サーバ" OnClick="Button2_Click" /> </br> <asp:TextBox ID="TextBox1" runat="server" text="遷移先へのパラメータを入力"></asp:TextBox> </form>
C# 遷移元
protected void Button2_Click(object sender, EventArgs e) { string url = "windowC.aspx?par=" + TextBox1.Text; ClientScriptManager cs = Page.ClientScript; cs.RegisterStartupScript(this.Page.GetType(), "OpenNewWindow", "window.open('" + url + "', null);", true); }
遷移先 aspx
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
遷移先 C#
Label1.Text = Request.QueryString["par"];