Asp.net mvc 4 使用MVC和Razor在EpiServer7中构建顶部菜单
我正试图弄清楚如何在EpiServer7中实现菜单。唯一可用的文档说明了如何使用我未使用的webforms执行此操作 有什么建议吗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开发课程上演示了这个)。当然可以,但我决定遵循这个模式 @
谢谢在有人抢我之前,我写过一个解决方案:)
在控制器或视图模型中组装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);
}