Asp.net mvc 4 使用MVC和Razor在EpiServer7中构建顶部菜单

Asp.net mvc 4 使用MVC和Razor在EpiServer7中构建顶部菜单,asp.net-mvc-4,episerver,episerver-7,Asp.net Mvc 4,Episerver,Episerver 7,我正试图弄清楚如何在EpiServer7中实现菜单。唯一可用的文档说明了如何使用我未使用的webforms执行此操作 有什么建议吗 谢谢在有人抢我之前,我写过一个解决方案:) 在控制器或视图模型中组装IEnumerable可能更明智,而不是在实际视图中使用代码。我同意,但我已将代码放在没有任何控制器或默认模型的razor母版页中。也许我应该构建这个模型。另一种方法是为你的主导航和类似的东西做渲染(Joel Abrahamsson在EPi7开发课程上演示了这个)。当然可以,但我决定遵循这个模式 @

我正试图弄清楚如何在EpiServer7中实现菜单。唯一可用的文档说明了如何使用我未使用的webforms执行此操作

有什么建议吗


谢谢

在有人抢我之前,我写过一个解决方案:)


在控制器或视图模型中组装IEnumerable可能更明智,而不是在实际视图中使用代码。我同意,但我已将代码放在没有任何控制器或默认模型的razor母版页中。也许我应该构建这个模型。另一种方法是为你的主导航和类似的东西做渲染(Joel Abrahamsson在EPi7开发课程上演示了这个)。当然可以,但我决定遵循这个模式
@using EPiServer
@using EPiServer.Core
@using EPiServer.Filters
@using EPiServer.Web.Mvc.Html

<ul id="mainMenu">
        @{ 
            PageData startPage = ContentReference.StartPage.GetPage();
            PageDataCollection allChilds = DataFactory.Instance.GetChildren(((PageData)startPage).PageLink);
            IEnumerable<PageData> filteredChilds = FilterForVisitor.Filter(allChilds).Where(p => p.IsVisibleOnSite() && p.VisibleInMenu);
        }

        @foreach (PageData item in filteredChilds)
        {
            <li>
                <a href="/@item.URLSegment.ToString()">
                    @item.Name
                </a>
            </li>
        }
</ul>
public static PageData GetPage(this PageReference pageLink)
{
    return DataFactory.Instance.GetPage(pageLink);
}