none
ASP.NETで新しいウィンドウでURLを開きたい RRS feed

  • 質問

  • Webフォームでイベント発生時に新しいウィンドウでURLを開きたいのですが
    方法がわからないので、御教授お願いします。
    IE8以上で動作すれば他の環境で動かなくてもかまいません。

    ■やりたいこと
    ボタンをクリックしたときに詳細を表示するWebページを別ウィンドウで
    開きたいです。

    環境

    VisualStudio2012

    サーバー:WindowsServer2012 IIS8

    2013年7月4日 6:35

回答

すべての返信

  • どのようなコードを書かれているのでしょうか? ASP.NETではなく単なるHTMLの記述方法なように思いますが…
    • 回答の候補に設定 佐祐理 2013年7月8日 0:55
    2013年7月4日 7:05
  • > ボタンをクリックしたときに詳細を表示する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.aspx

    ModalPopup で編集・更新操作
    http://surferonwww.info/BlogEngine/post/2010/10/14/Select-edit-and-update-using-2-pages.aspx

    • 回答としてマーク bikke 2013年7月7日 23:33
    2013年7月4日 7:56
  • To:SurferOnwwwさん

    早速の返信ありがとうございます。御教授の内容を確認し把握しておりまして、返信遅れてすいません。

    ご指摘のとおり、ポップアップブロックにひっかかるのがNGなので、指摘ページを中心に検討していました。

    記述してなくてもうしわけないのですが、もともとメニューを作成したかったのですが、ボタン等で作成しようと思い

    今回の質問になりました。つまり、メニュー画面から、別のURLを新しいウインドウで開きかったのです、

    もちろんHTMLで作成すれば簡単ですが、ASP.NETでの作成ですので、できればC#でのコーディングとしたかったわけです。

    そこで、ASP.NETの資料を確認していたところ、GRiDViewにそのような機能があり、それを使うこととしました。

     ModalPoPupにつきましては、詳細画面の作成方法として参考にさせていただきました。

    大変ありがとうございました。今後とも、よろしくお願いします。

    2013年7月7日 23:33
  • To:佐祐理さん

    記述不足ですいません。できるだけASP.NET+C#で記述したかったので質問させていただきました。

    早速の返信ありがとうございました。今後ともよろしくお願いします。

    2013年7月7日 23:35
  • > ご指摘のとおり、ポップアップブロックにひっかかるのがNGなので、
    > 指摘ページを中心に検討していました。

    > 記述してなくてもうしわけないのですが、もともとメニューを作成し
    > たかったのですが、ボタン等で作成しようと思い

    ブラウザ側で完結できることと、サーバーにポストバックして処置すべきことの区別がついているでしょうか?

    今回は前者(ブラウザ側で完結できること)だったようですね。ボタンにサーバーコントロールの Button を使うなら、その OnClientClick プロパティに以下のようなスクリプトを設定してやれば済むはずです。それはサーバー側で C# のコードでできるはずです。

    window.open(...); return false;

    ユーザーがクリックして別窓を開くことになるのでポップアップブロックには引っかかりませんし、return false でポストバックは避けられるはずです。

    window.open の引数(上記で ... の部分)の詳細はググって調べてください。

    2013年7月8日 0:49
  • SurferOnWwwさんもかかれていますが、ASP.NET+C#ではWebブラウザーを操作することはできません。WebブラウザーはHTML / JavaScript / CSSしか解釈しませんから、それらで記述する必要があります。

    つまり、実現したいことと勉強する領域が異なっています。

    2013年7月8日 0:55