我正在寫新的asp.net mvc應用程序,我對創建多級導航系統有疑問。asp.net mvc3和多級導航
例如我有主導航網頁(CPU --- ---- GPU拉姆)
和子導航與(英特爾,AMD --- ATI,NVIDIA --- DDR2,DD3)
好了,我的第一個實現是在這裏:
public class NavigationItem
{
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual string Controller { get; set; }
public virtual string Action { get; set; }
public virtual string Url { get; set; }
public virtual string Section { get; set; }
}
public class NavigationController : Controller
{
private readonly IUnitOfWork _unitOfWork;
public NavigationController(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
public ActionResult MainMenu()
{
return View(_unitOfWork.NavigationItems.Where(x => x.Section == null).ToList());
}
public ActionResult SectionMenu()
{
return View(_unitOfWork.NavigationItems.Where(x => x.Section == "// name of section").ToLis());
}
}
最後我的頁面佈局是:
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
</head>
<body>
<div class="main-menu">
@{Html.RenderAction("MainMenu", "Navigation");}
</div>
<div class="section-menu">
@{Html.RenderAction("SectionMenu", "Navigation");}
</div>
@RenderBody()
</body>
</html>
有了這個實現我有問題如何我在SectionMenu與MainMenu處理是活動的,因爲我想生成SectionMenu取決於MainMenu並突出顯示它們。
女巫的一種解決方法,我認爲是SectionMenu中處理URL(控制器)。 例如:
if (RouteData.Values["controller"].ToString() == "Administration")
{
// Generate section menu for Administration main menu
}
我不喜歡這個解決方案,因爲我用「神奇字符串」值工作,我還沒有每MainMenu的只有一個控制器。
如何實施此解決方案?
感謝意見
有關你如何完成這一任何更新?我只是寫了幾乎完全相同的代碼,試圖做同樣的事情... – Micah 2011-06-11 17:50:10