2011-06-20 47 views
2

我想從http://mvcsitemap.codeplex.com/使用MvcSiteMapProvider爲我的網站生成麪包屑路徑。我有一些頁面需要在URL中傳遞一個ID,所以我試圖使用動態節點來完成此操作。但是,對於我聲明爲動態的所有節點,相應頁面上不會顯示麪包屑。當我使用DynamicNodeProvider類中的斷點進行調試時,我也遇到了一個有趣的錯誤。下面是類的基本版本,並在站點地圖結點:在一個位置MVC站點提供商 - DynamicNodeProvider導致麪包屑消失

public class UserSummaryDynamicNodeProvider : DynamicNodeProviderBase 
{ 
    private static ServiceClient proxy = new ServiceClient(); 
    List<User> users = proxy.GetUsers(); 

    public override IEnumerable<DynamicNode> GetDynamicNodeCollection() 
    { 
     var nodes = new List<DynamicNode>(); 

     foreach (var user in users) 
     { 
      DynamicNode node = new DynamicNode(); 
      node.Key = "UserSummary"; 
      node.ParentKey = "UserMenu"; 
      node.RouteValues.Add("userID", user.ID); 

      nodes.Add(node); 
     } 

     return nodes; 
    } 
} 


<?xml version="1.0" encoding="utf-8" ?> 
<mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0" enableLocalizatoin="true"> 
    <mvcSiteMapNode title="Home" controller="Home" action="Index"> 
     <mvcSiteMapNode title="User Menu" controller="UserInfo" action="UserMenu"> 
      <mvcSiteMapNode title="User Summary" controller="UserInfo" action="UserSummary" dynamicNodeProvider="MySite.Users.DynamicNodeProviders.UserSummaryDynamicNodeProvider, MySite.Users" /> 
     </mvcSiteMapNode> 
    </mvcSiteMapNode> 
</mvcSiteMap> 

我得到的錯誤說:「沒有源代碼可用」,似乎是在尋找一個特定的C#源文件(MvcSiteMapNode.cs)我沒有指定(c:\ Projects \ Codeplex \ TFS10 \ mvcsitemap \ Branches \ 3.1.0 \ src \ MvcSiteMapProvider \ MvcSiteMapProvider)。我從codeplex網站下載了這個DLL,這個類包含在庫中,但是源文件並沒有單獨包含在下載中。我已經包含了適當的程序集引用(包括MvcSiteMapProvider和MvcSiteMapProvider.Extensibility)。我在這裏錯過了很明顯的東西嗎

這可能不是我唯一的問題。在我嘗試使用動態節點之前,我嘗試將[SiteMapPreserveRouteData]屬性添加到我的操作結果中,但這也不起作用。在這種情況下,麪包屑仍會出現,但路徑中的ID參數都不會被保留。任何想法爲什麼不行?只是爲了澄清,我使用MVC3和.NET 4.0

請讓我知道如果我需要提供一些更多的信息。

回答

0

正如在CodePlex上提到的:嘗試最新的3.1.0分支應該解決這個問題。

+0

嗨馬爾滕巴,我試過3.1.0沒有任何運氣。你能確認哪個版本解決了這個問題嗎? – Vincent