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

例如,我的网站具有主导航功能(Cpu --- Gpu ---- Ram)

和(-intel,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>

通过此实现,我遇到了问题,即如何在具有MainMenu的SectionMenu中进行处理,因为我想生成SectionMenu取决于MainMenu并突出显示它们。

我认为女巫的一种解决方法是在SectionMenu中处理url(controller)。 例如 :

    if (RouteData.Values["controller"].ToString() == "Administration")
    {
        // Generate section menu for Administration main menu
    }

我不喜欢这种解决方案,因为我使用“魔术字符串”值,并且每个MainMenu仅具有一个控制器。

如何实施该解决方案?

谢谢你的建议

===============>>#1 票数:0

我想您必须更深入地了解MVC的路由系统。 它在一开始看起来并不十分简单,但这可能是整个MVC中最重要的区域。 有时,尽管您很容易感到困惑,尤其是在Global.asax中定义了许多路由的情况下。 有一个名为Route debugger的项目,它可以帮助您。 我不记得链接了。 尝试在Google上搜索它。。。如果找不到它,我稍后会发送链接。

===============>>#2 票数:0 已采纳

好的,我使用ViewBag功能。 不干净,但是可以

  ask by Mennion translate from so

未解决问题?本站智能推荐: