2011-01-11 28 views
5

Tôi đã từng mất trí nhớ để tìm ra lý do tại sao tôi không thể tải ASP.NET MVCSiteMap để làm việc.ASP.NET MVC SiteMap

Tôi đã tải xuống phiên bản mới nhất từ ​​CodePlex (phiên bản 2.3) và thiết lập tham chiếu như được nêu trên CodePlex. Tôi đã tải về DisplayTemplates và thiết lập một tập tin Mvc.sitemap cơ bản:

<?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> 

Khi sử dụng Helper HTML để tạo một menu cơ bản, tôi nhận được một sản lượng trống:

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

Trong MenuHelperModel.ascx DisplayTemplate, tôi xuất ra số nút:

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

các kết quả đầu ra là:

0 

Tôi không thể hiểu được mình đang làm gì sai. Tôi không nhận được bất kỳ lỗi nào, và tôi đang sử dụng tệp Mvc.sitemap được cung cấp bởi trang web dự án CodePlex với một số sửa đổi nhỏ cho các hành động/bộ điều khiển của tôi. Chú ý: Tôi cũng đã tải về dự án mẫu, nhưng nó sẽ không biên dịch cho tôi và tệp sơ đồ trang web đang được sử dụng quá phức tạp để tôi tìm hiểu ở giai đoạn đầu này trong sự hiểu biết của tôi về cách sử dụng nó.

Bất kỳ trợ giúp nào được đánh giá cao.

Trả lời

1

Phiên bản 2.3 đã sẵn sàng cho MVC3. Tôi biên dịch lại các nguồn tươi, đã có thêm một tài liệu tham khảo để lắp ráp MVC2, thay đổi hai dòng mã cho đến khi tôi đã có một MvcSitemap.dll làm việc

Trong Mvc.sitemap của bạn tôi đã phải thay đổi không gian tên để:

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

(lưu ý -3.0 vào cuối thay vì -2,0, trong phiên bản mới nhất của nó là -4.0 ở cuối)

Và chắc chắn rằng tên của bộ điều khiển phù hợp với một bộ điều khiển nơi bạn kiểm tra nếu không thì cơ chế bảo mật sẽ ngăn chặn mọi thứ hiển thị.

Xin lưu ý rằng dự án đã chuyển sang Github không gian tên vẫn đang tham chiếu codeplex.com.

0

Tôi gặp vấn đề tương tự - Số nút 0. Tôi đã tìm thấy giải pháp cho vấn đề của mình, tôi hy vọng nó sẽ giúp bạn.

Trong App_Start -> RouteConfig.cs tôi đã:

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

Tôi đã gỡ bỏ namespaces: new string[] { "Mvc4AppNamespace.Controllers" } và nó làm việc. Trong trường hợp của tôi, vấn đề là với không gian tên.