2012-03-15 93 views
0

嗨,有人能告訴我如何將PartialView加載到我已準備好位於_Layout.cshtml中的div容器中(它完全獨立於鏈接本身) 。我想把它裝到集裝箱上的以下操作鏈接的點擊:如何在_Layout.cshtml中將部分視圖加載到容器中

<a href="@Url.Action("RenderColorbox", "ContactPartial", new { path = "_ContactPartial" })" class="colorboxLink"><span>ContactUs</span></a> 

我想這樣做沒有JavaScript的,因爲我需要建立在我的控制器模型,並把它傳遞給PartialView,我不認爲它可能將強類型模型傳遞給使用JavaScript的視圖。

如果我想我可以使用:

$('.colorboxLink').click(function() { 
    $('.colorbox_container').load(this.href); 
}); 

,但正如我所說,這並沒有給我創造並傳遞一個強類型的模型局部視圖的機會......我可以其重要創建模型並將其傳遞給視圖,因爲當我在部分視圖中嘗試類似foreach(Model.ItemList中的var項)時,Im獲取空引用異常。

我的繼承人控制器是什麼樣子:

public virtual ActionResult RenderColorbox(string path) 
    { 
     return PartialView(path, null); 
    } 

然而,目前,點擊跳轉鏈接只是呈現一個新的空白頁面,而不是我已經建立了容器內的PartialView。

謝謝大家的幫助。

編輯:要加載顏色框我用下面的建議:

$('.colorboxLink').click(function() { 
    $('.colorbox_container').load(this.href, function() { 
     var colorboxOptions = { 
      inline: true, 
      scrolling: false, 
      opacity: ".9", 
      fixed: true, 
      onLoad: function() { 
       $('#cboxContent').css({ 
        "background": "white" 
       }); 
       $('#cboxLoadedContent').css({ 
        "margin-bottom": "28px", 
        "height": "558px" 
       }); 
      } 
     } 
     $('#contactColorbox').colorbox(colorboxOptions); 


    }); 

但仍沒有加載顏色框,而是作爲一個彈出模式。

回答

0

但正如我所提到的,這並不能讓我有機會創建並將 強類型模型傳遞給局部視圖。

它給你這樣的機會。您正在向ContactPartial控制器上的RenderColorbox操作發送AJAX請求。這裏面的動作,你可以準備併發送你想局部任何複雜的視圖模型:

public ActionResult RenderColorbox(string path) 
{ 
    SomeComplexModel model = ... 
    return PartialView(path, model); 
} 

另外,還要確保你通過返回從單擊處理虛假取消鏈接的默認操作:

$(function() { 
    $('.colorboxLink').click(function() { 
     $('.colorbox_container').load(this.href); 
     return false; 
    }); 
}); 

如果你不這樣做,當你點擊鏈接時,你的AJAX調用幾乎沒有機會在瀏覽器重定向到目標頁面之前執行。

+0

那麼,如果我要使用javascript load()就像我上面顯示的那麼我會在actionlink上設置onclick =「false」,不是嗎?因爲否則它只是將局部視圖加載到空白的新頁面中。在這種情況下,如果onclick =「false」,RenderColorbox()不會被調用嗎? – parliament 2012-03-15 07:38:12

+0

像魅力一樣工作。非常感謝! – parliament 2012-03-15 07:45:10

+0

@ user1267778,爲什麼當你已經在你的javascript中訂閱它時,爲你的錨添加onclick屬性?也正確的是'onclick =「return false;'',而不是'onclick =」false「'。但不要這樣做。不要混合標記和JavaScript。 – 2012-03-15 07:46:18

相關問題