MaartenBalliauwによるASP.NETMVCSiteMapProviderを使用しています。
ヘルパーを使用してメインナビゲーションとブレッドクラムを表示します。時々、レンダリングされたページから完全に消えることに気づきました。
ローカル環境では、プロジェクトを再構築し、ブラウザの現在のページから移動して元に戻す必要があります。本番環境では、サイト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()
dynamicNodeProvider:
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は標準に準拠しており、変更されていません。