web-dev-qa-db-ja.com

MVCポップアップウィンドウ

Mvcでポップアップウィンドウを作成する必要があります(ブラウザーの新しいタブではありません)。誰でもこれを行う方法を知っていますか?

11
Cipiripi

1つの可能性は jquery ui dialog を使用することです。

[〜#〜]編集[〜#〜]

アイデアは、部分的なビューを返すajaxアクションを持つことです。そのアクションの結果(html)がポップアップのコンテナー内に配置され、ajax呼び出しの成功ハンドラーでポップアップを開きます。ここにいくつかのサンプルコードがあります:

@Ajax.ActionLink("Open popup", "SomeAction", new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "result", InsertionMode = InsertionMode.Replace, OnSuccess="openPopup" })<br />

<div id="result" style="display:none;"></div>

<script type="text/javascript">
$(document).ready(function() {
    $("#result").dialog({
        autoOpen: false,
        title: 'Title',
        width: 500,
        height: 'auto',
        modal: true
    });
});
function openPopup() {
    $("#result").dialog("open");
}
</script>

次に、部分的なビューを返すコントローラにアクションを追加する必要があります

 [HttpGet]
 public PartialViewResult SomeAction()
 {
      return PartialView();
 }

部分ビューに必要なものを配置します。アクションなどにパラメーターを含めることもできます。

幸運を!

37
uvita

最も明白な方法は、jsフレームワークの1つを使用することです。個人的に私はjQuery UIダイアログコントロールを好みます。
詳細については http://jqueryui.com/demos/dialog/ を確認してください。
また、チェックすることもできます ASP.NET MVCモーダルダイアログ/ポップアップのベストプラクティス (あなたの質問と同様の質問です)

もちろん、単純なポップアップが必要な場合は、常にalert('Im popup');を使用できます。

最新のリクエストに応じて更新します
新しいウィンドウでURLを開くには、次のJavaScriptを使用できます:

function OpenDialog() {
window.open("some url", "DialogName", "height=200,width=200,modal=yes,alwaysRaised=yes");
}

しかし、結果は本当にブラウザに依存します。それらのほとんどは、新しいタブではなく新しいブラウザーインスタンスでこのモーダルウィンドウを開きます。
このトピックはあなたにも役立つかもしれません:
JavaScriptはタブではなく新しいウィンドウで開きます

3