Asp.net mvc 2 ASP.NET MVC站点地图
我一直在疯狂地试图弄明白为什么我不能让ASP.NET MVCSiteMap工作 我已从CodePlex(2.3版)下载了最新版本,并设置了上概述的参考。我下载了DisplayTemplates并设置了一个基本的Mvc.sitemap文件:Asp.net mvc 2 ASP.NET MVC站点地图,asp.net-mvc-2,mvcsitemapprovider,Asp.net Mvc 2,Mvcsitemapprovider,我一直在疯狂地试图弄明白为什么我不能让ASP.NET MVCSiteMap工作 我已从CodePlex(2.3版)下载了最新版本,并设置了上概述的参考。我下载了DisplayTemplates并设置了一个基本的Mvc.sitemap文件: <?xml version="1.0" encoding="utf-8" ?> <mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-2.0" en
<?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>
我不知道我做错了什么。我没有收到任何错误,我正在使用CodePlex项目站点提供的Mvc.sitemap文件,并对我的操作/控制器进行了一些小的修改
注意:我也下载了示例项目,但它不会为我编译,而且所使用的站点地图文件太复杂了,我在理解如何使用它的早期阶段无法理解
非常感谢您的帮助。2.3版本已经为MVC3做好了准备。我重新编译了新的源代码,添加了对MVC2程序集的引用,更改了两行代码,直到有了一个可用的MvcSitemap.dll 在您的Mvc.sitemap中,我必须将名称空间更改为:
http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0
(请注意结尾处的-3.0而不是-2.0,在最新版本中,结尾处的是-4.0)
并确保控制器的名称与您测试它的控制器匹配,否则安全机制将阻止任何显示
请注意,项目已移动到名称空间,但仍在引用codeplex.com。我遇到了相同的问题-节点数为0。我找到了解决问题的办法,希望对你有帮助 在App_Start->RouteConfig.cs中,我有:
routes.MapRoute("Robots.txt",
"robots.txt",
new { controller = "Home", action = "Robots" },
namespaces: new string[] { "Mvc4AppNamespace.Controllers" });
我删除了namespaces:newstring[]{“Mvc4AppNamespace.Controllers”}
并成功了。在我的例子中,问题在于名称空间
<%@ 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
routes.MapRoute("Robots.txt",
"robots.txt",
new { controller = "Home", action = "Robots" },
namespaces: new string[] { "Mvc4AppNamespace.Controllers" });