2011-01-11 63 views
5

我一直瘋了,試圖找出爲什麼我不能讓ASP.NET MVCSiteMap工作。ASP.NET MVC SiteMap

我已經從CodePlex(版本2.3)下載了最新版本,並設置了CodePlex上列出的參考。我下載了DisplayTemplates和建立基本Mvc.sitemap文件:

<?xml version="1.0" encoding="utf-8" ?> 
<mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-2.0" enableLocalization="true"> 
    <mvcSiteMapNode title="Dashboard" controller="Admin" action="Index" changeFrequency="Always" updatePriority="Normal"> 
     <mvcSiteMapNode title="Users" controller="Users" action="Index" /> 
     <mvcSiteMapNode title="Reports" controller="Reports" action="Index" /> 
    </mvcSiteMapNode> 
</mvcSiteMap> 

當使用HTML輔助生成一個基本的菜單,我得到了一個空白輸出:

<%: Html.MvcSiteMap().Menu() %> 

在MenuHelperModel.ascx DisplayTemplate,我輸出節點的數量:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl`1[ [MvcSiteMapProvider.Web.Html.Models.MenuHelperModel,MvcSiteMapProvider] ]" %> 
<%@ Import Namespace="System.Web.Mvc.Html" %> 
<%@ Import Namespace="MvcSiteMapProvider.Web.Html.Models" %> 

<%: Model.Nodes.Count %> 

<ul> 
<% foreach (var node in Model.Nodes) { %> 
    <li><%=Html.DisplayFor(m => node)%> 
    <% if (node.Children.Any()) { %> 
     <%=Html.DisplayFor(m => node.Children)%> 
    <% } %> 
    </li> 
<% } %> 
</ul> 

產生的輸出是:

0 

我搞不​​清楚我做錯了什麼。我沒有收到任何錯誤,並且正在使用CodePlex項目站點提供的Mvc.sitemap文件,並對我的操作/控制器進行了一些小修改。

注意:我也下載了示例項目,但它不會爲我編譯,並且正在使用的站點地圖文件對我來說太複雜了,無法在我理解如何使用它的早期階段弄清楚。

任何幫助,非常感謝。

回答

1

2.3版本已準備好用於MVC3。我重新編譯生源,有一個引用添加到MVC2組件,改變兩個代碼行,直到我有一個工作MvcSitemap.dll

在你Mvc.sitemap我不得不命名空間更改爲:

http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0

(注意最後的,而不是-2.0 -3.0的,在最新的版本是-4.0末)

,並確保控制器的名稱,你測試控制器匹配否則安全機制將阻止任何顯示。

請注意,該項目已移至Github該名稱空間仍然參考codeplex.com。

0

我有同樣的問題 - 節點計數爲0.我找到了解決方案,我希望它能幫助你。

在App_Start - > RouteConfig.cs我:

routes.MapRoute("Robots.txt", 
      "robots.txt", 
      new { controller = "Home", action = "Robots" }, 
      namespaces: new string[] { "Mvc4AppNamespace.Controllers" }); 

我刪除namespaces: new string[] { "Mvc4AppNamespace.Controllers" }和它的工作。在我的情況下,問題是命名空間。