Asp.net mvc 3 我似乎在MvcSiteMapProvider面包屑跟踪中获得了GUID,不知道为什么?

Asp.net mvc 3 我似乎在MvcSiteMapProvider面包屑跟踪中获得了GUID,不知道为什么?,asp.net-mvc-3,mvcsitemapprovider,asp.net-mvc-sitemap,Asp.net Mvc 3,Mvcsitemapprovider,Asp.net Mvc Sitemap,我使用的是MVC3、C#、Razor、mvcSiteMapProvider V4 我正在使用“Mvc.sitemap” “报告”和“报告部分”路由工作正常。然而,当我进入“后台”路由时,我丢失了mvcSiteMap BreadCrumb URL中“Report_部分”和“Report”路由的所有路由结构。相反,我得到了一个GUID,即: http://localhost/7ebe9bb9-a663-43fd-9fb1-865866be12b9 我相信这可能是自动生成的XML节点密钥。然而,当点

我使用的是MVC3、C#、Razor、mvcSiteMapProvider V4

我正在使用“Mvc.sitemap”

“报告”和“报告部分”路由工作正常。然而,当我进入“后台”路由时,我丢失了mvcSiteMap BreadCrumb URL中“Report_部分”和“Report”路由的所有路由结构。相反,我得到了一个GUID,即:

http://localhost/7ebe9bb9-a663-43fd-9fb1-865866be12b9
我相信这可能是自动生成的XML节点密钥。然而,当点击时,它会显示一个404

我应该得到类似于:

报告

http://localhost/Report/10
部分

http://localhost/Report/10/Section/100
你知道这是什么原因吗


谢谢。

如果URL解析程序找不到匹配项,您将获得URL的Guid。在本例中引发异常会导致其他问题(请参阅)

但是,我无法告诉您为什么在没有看到更多配置的情况下它不匹配。一个线索是我们正在使用UrlHelper.RouteUrl(字符串,RouteValueDictionary)解析URL。您可以尝试使用路由值和路由名称显式调用它。另外,有关其他线索,请参阅

我注意到的一件事是,当ClientID route参数甚至没有在该路由中使用时,您正在为Background保留该参数。请记住,保留路由参数只会从当前HTTP请求复制它们,而您的其他节点似乎会忘记它们

PreserveRouteParameters通常用于创建数据编辑页的CRUD操作。如果您想让它看起来“记住”用户的导航路径,那么您需要为站点地图中的每个唯一路由值组合添加1个节点


如果上述内容没有帮助,请创建一个展示问题的小演示项目,并将其上载到GitHub,或者将其压缩并可供下载,然后在上打开一个新问题,并提供演示链接。

谢谢。。真的很有帮助。这个GUID问题让我抓狂。
http://localhost/Report/10
http://localhost/Report/10/Section/100