MvcSiteMapProvider和带连字符的url

时间:2012-05-22 11:58:14

标签: c# asp.net-mvc asp.net-mvc-routing mvcsitemapprovider

我有一个使用带连字符的URL的MVC网站(用于SEO优化),例如:

www.domain.com/about-us/know-our-services

现在我已经实现了MvcSiteMapProvider来生成动态面包屑,但对于带有连字符的URL,它不起作用(在站点地图上找不到它)。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

生成自定义网址的推荐方法是调整路线以构建您的网址方案。为了让MvcSiteMapProvider生成正确的URL,您必须确保可以解析您的传出路由。

路由是双向映射。传入路由在RouteBase类的GetRouteData方法中确定。传出路由由RouteBase类的GetVirtualPath方法确定。接收路由是MVC用来确定哪个URL与给定控制器和动作匹配的路径。 MVC和MvcSiteMapProvider用于解析URL的GetVirtualPath方法,因此必须实现它才能使MvcSiteMapProvider与自定义URL一起运行。

关于如何通过子类化RouteBase来实现这些方法的一些想法,请查看Custom Routes in ASP.NET MVC。注册Route类时也适用这些相同的想法 - 您必须确保双向解析才能使其工作。