トップ回答者
ASP.NETで新しいウィンドウでURLを開きたい

質問
回答
-
> ボタンをクリックしたときに詳細を表示するWebページを別ウィンドウで
> 開きたいです。親画面にある Button クリックでポストバックして、サーバー側で何らかの処置をした上で、親画面を応答として返してブラウザに表示すると同時に、親画面とは別に子画面を開いてそれに「詳細」を表示したいということですか?
ポップアップブロックに引っかかってもいいなら、親画面を応答として返す際に、ClientScriptManager クラスを使って子画面を開くスクリプトを仕込むようにすれば可能です。例えば下記。
ClientScriptManager.RegisterStartupScript メソッド (Type, String, String)
http://msdn.microsoft.com/ja-jp/library/asz8zsxy(v=vs.100).aspx
ポップアップブロックに引っかかるのは NG ならば、Ajax Control Toolkit の ModalPopup を使うのがお勧めです。1 ページに「詳細」を含めて全て配置できるので処置が簡単ですし、見かけは 2 画面にできます。ModalPopup Demonstration
http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ModalPopup/ModalPopup.aspxModalPopup で編集・更新操作
http://surferonwww.info/BlogEngine/post/2010/10/14/Select-edit-and-update-using-2-pages.aspx- 回答としてマーク bikke 2013年7月7日 23:33
すべての返信
-
> ボタンをクリックしたときに詳細を表示するWebページを別ウィンドウで
> 開きたいです。親画面にある Button クリックでポストバックして、サーバー側で何らかの処置をした上で、親画面を応答として返してブラウザに表示すると同時に、親画面とは別に子画面を開いてそれに「詳細」を表示したいということですか?
ポップアップブロックに引っかかってもいいなら、親画面を応答として返す際に、ClientScriptManager クラスを使って子画面を開くスクリプトを仕込むようにすれば可能です。例えば下記。
ClientScriptManager.RegisterStartupScript メソッド (Type, String, String)
http://msdn.microsoft.com/ja-jp/library/asz8zsxy(v=vs.100).aspx
ポップアップブロックに引っかかるのは NG ならば、Ajax Control Toolkit の ModalPopup を使うのがお勧めです。1 ページに「詳細」を含めて全て配置できるので処置が簡単ですし、見かけは 2 画面にできます。ModalPopup Demonstration
http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ModalPopup/ModalPopup.aspxModalPopup で編集・更新操作
http://surferonwww.info/BlogEngine/post/2010/10/14/Select-edit-and-update-using-2-pages.aspx- 回答としてマーク bikke 2013年7月7日 23:33
-
To:SurferOnwwwさん
早速の返信ありがとうございます。御教授の内容を確認し把握しておりまして、返信遅れてすいません。
ご指摘のとおり、ポップアップブロックにひっかかるのがNGなので、指摘ページを中心に検討していました。
記述してなくてもうしわけないのですが、もともとメニューを作成したかったのですが、ボタン等で作成しようと思い
今回の質問になりました。つまり、メニュー画面から、別のURLを新しいウインドウで開きかったのです、
もちろんHTMLで作成すれば簡単ですが、ASP.NETでの作成ですので、できればC#でのコーディングとしたかったわけです。
そこで、ASP.NETの資料を確認していたところ、GRiDViewにそのような機能があり、それを使うこととしました。
ModalPoPupにつきましては、詳細画面の作成方法として参考にさせていただきました。
大変ありがとうございました。今後とも、よろしくお願いします。
-
> ご指摘のとおり、ポップアップブロックにひっかかるのがNGなので、
> 指摘ページを中心に検討していました。> 記述してなくてもうしわけないのですが、もともとメニューを作成し
> たかったのですが、ボタン等で作成しようと思いブラウザ側で完結できることと、サーバーにポストバックして処置すべきことの区別がついているでしょうか?
今回は前者(ブラウザ側で完結できること)だったようですね。ボタンにサーバーコントロールの Button を使うなら、その OnClientClick プロパティに以下のようなスクリプトを設定してやれば済むはずです。それはサーバー側で C# のコードでできるはずです。
window.open(...); return false;
ユーザーがクリックして別窓を開くことになるのでポップアップブロックには引っかかりませんし、return false でポストバックは避けられるはずです。
window.open の引数(上記で ... の部分)の詳細はググって調べてください。