我正在使用 Maarten Balliauw 的ASP.NET MVC SiteMapProvider。
我使用助手显示主导航和面包屑。我不时注意到它们完全从呈现的页面中消失了。
在本地环境中,我必须重建项目并离开浏览器中的当前页面才能将它们取回。在生产中,我发现我必须重新上传站点 DLL。这些“修复”本身只能取得好坏参半。
有一个“轻微”的模式,但未确认 - 当您编辑或上传视图时会出现问题。
任何帮助将不胜感激。这是我的一些代码:
站点地图文件的一部分:
<mvcSiteMapNode title="Home" controller="Home" action="Index" key="home">
<mvcSiteMapNode title="About us" controller="about" action="index" key="about">
<mvcSiteMapNode title="Our Approach" controller="about" action="approach" url="/about/our-approach" imageUrl="/content/images/ourApproachNavImg.jpg" />
</mvcSiteMapNode>
<mvcSiteMapNode title="News" controller="news" action="index" key="news" showSubNav="false">
<mvcSiteMapNode dynamicNodeProvider="XXX.Helpers.NewsItemDynamicNodeProvider, KDC" title="" />
</mvcSiteMapNode>
</mvcSiteMapNode>
帮手:
@Html.MvcSiteMap().Menu(false, true, false)
@Html.MvcSiteMap().SiteMapPath()
动态节点提供者:
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
{
var returnValue = new List<DynamicNode>();
var newsItemService = DependencyResolver.Current.GetService<INewsItemService>();
foreach (var item in newsItemService.GetAll(true, true))
{
DynamicNode node = new DynamicNode();
node.Title = item.Title;
node.Action = "detail";
node.RouteValues.Add("url", item.Url);
returnValue.Add(node);
}
return returnValue;
}
web.config 中的 MvcSiteMapProvider 符合标准且未更改。