2012-06-16 43 views
3

我正在研究一個ASP.NET MVC3 Web應用程序,並且我想創建一個導航菜單,其中有一個從對象中動態創建的子菜單。例如,我有一個包含書籍列表的庫對象/模型。我希望我的導航可以動態地填充每本書籍的鏈接並顯示它們的標題。來自對象的動態導航

例:

Home 
Book List 
- Book 1 
- Book 2 
- Book 3 
About 

我必須從我的控制器通過圖書館對象通過ViewData的這個工作。然後我的共享_Layout.cshtml頁面讀取ViewData並填充導航菜單。然而,這個解決方案的缺點是每個在我的控制器中返回視圖的方法都必須將Library對象放入ViewData中。所以我想知道是否有更好或更簡單的方法來做到這一點?

我相信它可以用jQuery來完成,但也許你們都有更好的主意。

回答

0

Erik在Phil Haack的博客上發佈的鏈接是正確的解決方案,但我花了一段時間才弄清楚Phil的例子在做什麼。這是一個非常古老的MVC2示例,所以這裏是我的程序最終看起來像是在某人遇到同樣問題時的示例。

首頁控制器:

[ChildActionOnly] 
public ActionResult Menu() 
{ 
Library library = something.getLibrary(); 

return PartialView("_MenuPartial", library); 
} 

共享管窺_MenuPartial.cshtml:

@model ProjectName.Models.Library 

<ul> 
@foreach (var book in @Model.BookList) 
{ 
    <li><a href="#">@book.Title</a></li> 
} 
</ul> 

共享視圖_Layout.cshtml:

<html> 
<head> 
</head> 
<body> 
    <nav> 
    @{Html.RenderAction("Menu","Home");} 
    </nav> 
</body> 
</html>