2014-03-05 20 views
0

我有一個模型,加載我的網頁的邊欄,加載主要內容的模型。每個頁面的內容模型將有所不同,而側邊欄模型將保持不變。內容模型將通過用戶點擊鏈接改變:多個調用同一頁上的控制器

~/Home/About 
~/Home/Contact 

我非常希望把一個行的_Layout.cshtml加載一個返回PartialView顯示側邊欄模型中的控制器代碼。所以我們可能有:

<div id="sidebar"> 
    @Html.Render("~/SidebarController/GetSidebar"); 
</div> 
<div id="content"> 
    @RenderBody() 
</div> 

但我知道這是行不通的。我如何實現這一目標?

回答

2

我會做的是在_Layout.cshtml文件中使用@Html.Action("GetSidebar"),那麼你就可以有一個動作在控制器

public ActionResult GetSidebar() 
    { 
     //do stuff, populate menu items from database? etc 

     // Pass the data to the partial view 
     return PartialView("_Sidebar"); 
    } 

,除非你把這個基地控制器您需要這在每個控制器,然後您可以繼承所有其他控制器,並將[ChildActionOnly]添加到您的動作的頂部,以便不能直接調用它。

1

我做同樣的事情,你正試圖做。我用:

@Html.Action("GetSidebar", "SidebarController") 

來繪製我的側欄,它工作正常。我在改變視圖時使用ajax調用,以節省一次又一次加載側邊欄,我有ajax目標「內容」div用代表每個頁面的局部視圖替換其內容。

相關問題