2012-12-13 73 views
1

我正在使用Maarten Balliauw的ASP.NET MVC SiteMapProviderMvcSiteMapProvider - 菜單間歇性消失

我使用助手顯示主導航和麪包屑。我不時注意到它們完全從渲染頁面中消失。

在本地環境中,我不得不重建項目,並離開瀏覽器中的當前頁面以使其恢復。在製作中,我發現我必須重新上傳站點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; 
     } 

的MvcSiteMapProvider在web.config中每標準並沒有改變。

回答

0

MvcSiteMapProvider v3有許多線程和緩存問題,會導致這樣的問題。 MvcSiteMapProvider v4不再有這些問題,因爲它現在具有更好的線程安全性,並且緩存的站點地圖被設置爲只讀,因此一個用戶的導航不會影響其他用戶。

+0

我在MVC4上使用v4,我仍然在觀察同一個問題。這是一個新引入的錯誤,或者這個答案實際上不是正確的答案? – Dorival

+0

你的菜單和麪包屑消失了,還是根本沒有出現?這將是自v4發佈以來發生的第一次報告,如果它們隨機消失的話。請構建一個展示行爲的小型演示項目並在Github上打開一個新問題:https://github.com/maartenba/MvcSiteMapProvider/issues/new – NightOwl888