2012-03-15 228 views
1

我正在使用MVC3 Razor視圖在我的應用程序中使用jquery模式彈出窗口。MVC3剃刀視圖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

您可以使用JQuery UI Dialog plugin並使用它通過Ajax加載模態對話框

$('#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'get'到鏈接的'click'事件。 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 2012-03-15 10:09:55

+0

是的,我要編輯我的帖子。請稍等 – Razor 2012-03-15 10:14:32

+0

'dialog.html(responseText)'不會追加回復響應..因此我看到空白彈出窗口.. – Aman 2012-03-15 12:44:24