2011-01-11 6 views
5

ASP.NET MVCSiteMap을 사용할 수없는 이유를 알아 내려고 제 정신이 들었습니다.ASP.NET MVC SiteMap

CodePlex (버전 2.3)에서 최신 버전을 다운로드하고 CodePlex에 설명 된 참조를 설정했습니다. 나는 DisplayTemplates를 다운로드 및 기본 Mvc.sitemap 파일을 설정하십시오 MenuHelperModel.ascx에서

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

:

<?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 도우미를 사용하여

, 나는 빈 출력을 얻을를

<%@ 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> 

결과 출력은 다음과 같습니다 :

DisplayTemplate, 나는 노드의 수를 출력하고

내가 뭘 잘못하고 있는지 알 수 없습니다. 오류가 발생하지 않으며 CodePlex 프로젝트 사이트에서 제공하는 Mvc.sitemap 파일을 사용하여 작업/컨트롤러에 약간의 수정을 가하고 있습니다.

참고 : 샘플 프로젝트를 다운로드했지만 나에게 컴파일되지 않으며 사용되는 사이트 맵 파일이이 초기 단계에서 이것을 사용하는 방법을 이해하는 데 너무 복잡하다는 단점이 있습니다.

도움을 주시면 대단히 감사하겠습니다.

답변

1

2.3 버전은 MVC3에 사용할 준비가되었습니다.

: 나는에 네임 스페이스를 변경했다가, MVC2 어셈블리에 대한 참조를 추가 나는 당신의 Mvc.sitemap에서 작업 MvcSitemap.dll

했다 때까지 두 개의 코드 라인을 변경했다, 신선한 소스를 컴파일 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" }을 제거하고 일했다. 제 경우에는 네임 스페이스 문제가있었습니다.

관련 문제