Asp.net mvc 3 asp.net mvc3和多级导航

Asp.net mvc 3 asp.net mvc3和多级导航,asp.net-mvc-3,routing,navigation,url-routing,Asp.net Mvc 3,Routing,Navigation,Url Routing,我正在编写新的asp.NETMVC应用程序,我对创建多级导航系统有疑问 例如,我有带主导航的web(Cpu---Gpu---Ram) 和子导航(英特尔、amd---ati、nvidia---DDR2、DD3) 我的第一个实现是: public class NavigationItem { public virtual int Id { get; set; } public virtual string Title { get; set; } public virtual

我正在编写新的asp.NETMVC应用程序,我对创建多级导航系统有疑问

例如,我有带主导航的web(Cpu---Gpu---Ram)

和子导航(英特尔、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>
我不喜欢这个解决方案,因为我使用的是“魔术字符串”值,而且每个主菜单上并没有一个控制器

如何实现此解决方案


感谢您的建议

我想您必须深入了解MVC的路由系统。一开始看起来并不简单,但这可能是整个MVC中最重要的部分。但有时您很容易感到困惑,尤其是在Global.asax中定义了许多路由时。有一个名为Route debugger的项目,它很有帮助。我不记得链接了。试试谷歌吧。。。如果您找不到,我稍后会发送链接…

好的,我使用ViewBag功能。不干净,但有效

谢谢您的评论。是的,路由调试器很好,链接在这里:。顺便说一句,是的,你是对的,我在Global.asax中定义了许多路线:/关于你是如何完成这项任务的,有什么更新吗?我只是写了几乎完全相同的代码试图做同样的事情。。。
    if (RouteData.Values["controller"].ToString() == "Administration")
    {
        // Generate section menu for Administration main menu
    }