我有一个使用带连字符的URL的MVC网站(用于SEO优化),例如:
www.domain.com/about-us/know-our-services
现在我已经实现了MvcSiteMapProvider
来生成动态面包屑,但对于带有连字符的URL,它不起作用(在站点地图上找不到它)。
我该如何解决这个问题?
答案 0 :(得分:0)
生成自定义网址的推荐方法是调整路线以构建您的网址方案。为了让MvcSiteMapProvider生成正确的URL,您必须确保可以解析您的传出路由。
路由是双向映射。传入路由在RouteBase类的GetRouteData
方法中确定。传出路由由RouteBase类的GetVirtualPath
方法确定。接收路由是MVC用来确定哪个URL与给定控制器和动作匹配的路径。 MVC和MvcSiteMapProvider用于解析URL的GetVirtualPath
方法,因此必须实现它才能使MvcSiteMapProvider与自定义URL一起运行。
关于如何通过子类化RouteBase来实现这些方法的一些想法,请查看Custom Routes in ASP.NET MVC。注册Route类时也适用这些相同的想法 - 您必须确保双向解析才能使其工作。