2011-01-11 30 views
5

なぜ私はASP.NET MVCSiteMapを動作させることができないのか理解しようとしています。ASP.NET MVC SiteMap

私はCodePlex(バージョン2.3)から最新バージョンをダウンロードし、CodePlexに概要を示すようにリファレンスを設定しました。私はDisplayTemplatesをダウンロードして、基本的なMvc.sitemapファイル設定:基本メニューを生成するHTMLヘルパーを使用している場合、私は空白の出力を得る

<?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.MvcSiteMap().Menu() %> 

MenuHelperModel.ascxでDisplayTemplate、Iは、ノードの数を出力しています:

<%@ 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アセンブリへの参照を追加し、私はあなたのMvc.sitemapで作業MvcSitemap.dll

を有するまで2つのコード行を変更した、新鮮なソースを再コンパイルhttp://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0

(それが最後に-4.0である最新バージョンでは、代わりに-2.0の最後で-3.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" }を削除し、それが働きました。私の場合、問題は名前空間にありました。