2012-03-15 10 views
1

私のアプリケーションでMVC3 Razorビューでjqueryモーダルポップアップを使用しています。MVC3 Razor View PopUps

問題メニューオプションをクリックするとポップアップを開く必要があります。これらのメニューオプションはLayeoutページにあります(サイト全体に表示する必要があります)。 LayeoutにポップアップHTMLコードが必要なので、すべてのページソースに隠れて表示されています。

私は実行時にポップアップhtmlを作成するより良い方法がありますか?

私は今、この権利を使用して:

$(id).dialog({ 
      closeOnEscape: true, 
      draggable: true, 
      resizable: false, 
      dialogClass: clz, 
      modal: true, 
      title: $(id + ' .dialog-content').attr('title'), 
      closeText: '' 
     }); 

答えて

3

をあなたは、AJAX経由

JQuery UI Dialog pluginを使用してモーダルダイアログをロードするためにそれを使用することができます例へのコールを結合し

$('#MyAtag').click(function() { 
// Add a container for the modal dialog, or get the existing one 
var dialog = ($('#ModalDialog').length > 0) ? $('#ModalDialog') : $('<div id="ModalDialog" style="display:hidden"></div>').appendTo('body'); 
// load the data via ajax 
$.get('mycontroller/myaction', {}, 
    function (responseText, textStatus, XMLHttpRequest) { 
     dialog.html(responseText); 
     dialog.dialog({ 
      bgiframe: true, 
      modal: true, 
      width: 940, 
      title: 'My Title' 
     }); 
    } 
); 
}); 

ajaxはリンクの「クリック」イベントに「取得」します。 ajax getリクエストは、MVCプロジェクト内の対応するアクションから部分的なビューを返します。これは、モーダルダイアログに表示されます。

public ActionResult MyAction() 
{ 
    // Do Some stuff 
    //... 

    // If the request is an ajax one, return the partial view 
    if (Request.IsAjaxRequest()) 
     return PartialView("PartialViewName"); 

    // Else return the normal view 
    return View(); 
} 

あなたが望むもの、それです:ここで

は、コントローラがどのように見えることができるもののラフな例はありますか?

+0

ポップアップで「フォーム」が必要な場合は、「mycontroller/myaction」によって返された部分ビューでhtmlを記述する必要がありますか? – Aman

+0

はい、投稿を編集します。しばらくお待ちください – Razor

+0

何らかの形で 'dialog.html(responseText)'は応答レスポンスを追加していません。空白のポップアップが表示されています – Aman