c# - MvcSiteMapProvider 不适用于简单的 MVC.SiteMap 文件

标签 c# asp.net-mvc model-view-controller sitemap mvcsitemapprovider

所以这有点奇怪。我有一个非常简单的站点地图(为了调试而简化为这种简单性——实时版本要复杂得多):

<?xml version="1.0" encoding="utf-8" ?>
<mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0" enableLocalization="false">
  <mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal">
    <mvcSiteMapNode title="Why Buy Your New Home" Controller="WhyBuyYourNewHome" Action="Index" />
  </mvcSiteMapNode>
</mvcSiteMap>

当我尝试加载页面时,出现以下错误:

An item with the same key has already been added.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: An item with the same key has already been added.

Source Error:

Line 75:             else
Line 76:             {
Line 77:                 returnValue = UrlHelper.Action(action, controller, new RouteValueDictionary(routeValues));
Line 78:             }
Line 79: 


Source File: C:\sitemap\Branches\3.0.0\MvcSiteMapProvider\MvcSiteMapProvider\DefaultSiteMapNodeUrlResolver.cs    Line: 77 

奇怪的是,如果我删除“为什么要买你的新家”节点,它会起作用。此外,以下工作正常并加载我所有的动态节点:

    <?xml version="1.0" encoding="utf-8" ?>
    <mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0" enableLocalization="true">
      <mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal">
        <mvcSiteMapNode title="Find Your New Home" controller="FindYourNewHome" action="Index">
          <mvcSiteMapNode title="Markets" action="Market" updatePriority="Critical" dynamicNodeProvider="MyProject.MVC.Extensions.SiteMap.SiteMapMarketNodeProvider, MyProject.MVC.Extensions">
            <mvcSiteMapNode title="Communities" action="Community" updatePriority="High" dynamicNodeProvider="MyProject.MVC.Extensions.SiteMap.SiteMapCommunityNodeProvider, MyProject.MVC.Extensions">
              <mvcSiteMapNode title="Driving Directions" action="DrivingDirections" updatePriority="High" dynamicNodeProvider="MyProject.MVC.Extensions.SiteMap.SiteMapDrivingDirectionsNodeProvider, MyProject.MVC.Extensions" />
              <mvcSiteMapNode title="Floorplans" action="Floorplan" updatePriority="High" dynamicNodeProvider="MyProject.MVC.Extensions.SiteMap.SiteMapFloorplanNodeProvider, MyProject.MVC.Extensions" />          
            </mvcSiteMapNode>
          </mvcSiteMapNode>
        </mvcSiteMapNode>
      </mvcSiteMapNode>
</mvcSiteMap>

似乎只有当我添加非常简单的节点时,我才会收到重复键错误,但如果您查看我的第一个 XML 示例,就会发现不可能有重复键。如果我将“为什么要买你的新家”节点添加到我的最后一个包含动态节点提供程序的 XML 示例,它会再次中断。在这方面有什么帮助吗?

最佳答案

这很可能意味着该 WhyBuy 节点的 URL 与其他一些 URL 相同。也许您可以发布您的路线?

关于c# - MvcSiteMapProvider 不适用于简单的 MVC.SiteMap 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4806908/

相关文章:

c# - 基于另一个属性值的属性自定义 JsonConverter

javascript - 如何在 StringBuilder 中替换 html 的脚本内容

c# - ASP.NET MVC 中的发布/重定向/获取模式

Spring MVC架构

javascript - 将 $.ajax() 中的数组传递给 ajax 请求到 Controller Spring mvc

c# - 检查显示是否被 Windows 电源管理关闭

c# - WPF中的静态资源和动态资源有什么区别?

c# - 窗口的默认构造函数是否必须公开?

c# - MVC模型中Controller的作用是什么?

Java RMI 部署