ASP.NET MVC 站点地图

发布于 2024-10-11 16:01:16 字数 1722 浏览 4 评论 0原文

我一直在疯狂地试图找出为什么我无法让 ASP.NET MVCSiteMap 工作。

我已从 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 Helper 生成基本菜单时,我得到一个空白输出:

<%: 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 文件,并对我的操作/控制器进行了一些小的修改。

注意:我还下载了示例项目,但它不会为我编译,而且所使用的站点地图文件对我来说太复杂了,无法在我理解如何使用它的早期阶段弄清楚。

非常感谢任何帮助。

I have been going insane trying to figure out why I can't get the ASP.NET MVCSiteMap to work.

I have downloaded the latest version from CodePlex (version 2.3) and set up the references as outlined on CodePlex. I downloaded the DisplayTemplates and set up a basic Mvc.sitemap file:

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

When using the HTML Helper to generate a basic menu, I get a blank output:

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

In the MenuHelperModel.ascx DisplayTemplate, I am outputting the number of nodes:

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

The resulting output is:

0

I cannot figure out what I am doing wrong. I don't get any errors, and I am using the Mvc.sitemap file provided by the CodePlex project site with some minor modifications for my actions/controllers.

NOTE: I have also downloaded the sample project, but it will not compile for me and the sitemap file being used is way too complicated for me to figure out at this early stage in my understanding of how to use this.

Any help is greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时常饿 2024-10-18 16:01:16

2.3 版本已为 MVC3 做好准备。我重新编译了新的源代码,添加了对 MVC2 程序集的引用,更改了两行代码,直到我有了一个可以工作的 MvcSitemap.dll

在 Mvc.sitemap 中,我必须将命名空间更改为:

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

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

并且确保控制器的名称与您测试它的控制器匹配,否则安全机制将阻止任何内容显示。

请注意,该项目已移至 Github 命名空间仍引用 codeplex.com。

The 2.3 version is ready for MVC3. I recompiled the fresh source, had the add a reference to MVC2 assemblies, change two code lines until I had a working MvcSitemap.dll

In your Mvc.sitemap I had to change the namespace to:

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

(note the -3.0 at the end instead of -2.0, in the latest version it is -4.0 at the end)

And make sure the name of the controller matches a controller where you test it otherwise the security mechanism will prevent anything showing.

Please note that the project has moved to Github the namespace is still referencing codeplex.com.

瞳孔里扚悲伤 2024-10-18 16:01:16

我遇到了同样的问题 - 节点数为 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" } 并且它起作用了。就我而言,问题出在命名空间上。

I had the same problem - Nodes count 0. I found a solution for my problem, I hope it helps you.

In App_Start -> RouteConfig.cs I had:

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

I removed namespaces: new string[] { "Mvc4AppNamespace.Controllers" } and it worked. In my case the problem was with namespaces.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文