2016-12-17 87 views
1

我在asp.net web窗体中有网站。它使用url友好的结构。假设我有网址www.site.com/experience/ experience_category。这里有两种不同的页面体验&体验类。现在,无论何时我尝试访问此网址,它都不会向我显示此页面。它向我展示了www.site.com/experience页面。如何解决这个问题?动态URL路由不能与ASP.NET Web窗体站点一起使用

RouteConfig

Public Module RouteConfig 
    Public Sub RegisterRoutes(routes As RouteCollection) 
     Dim settings = New FriendlyUrlSettings() 
     settings.AutoRedirectMode = RedirectMode.Permanent 
     routes.EnableFriendlyUrls(settings) 

     routes.MapPageRoute("experience-category", "experience/{name}", "~/experience-category.aspx") 'For Experience Category 
    End Sub 
End Module 

回答

1

有许多事情可以做。

routes.EnableFriendlyUrls(settings)基本上做的是在路线集合中添加2条路线。

你的问题是,你有一个.aspx(experience.aspx)与你设置的路由URL的一部分同名(experience/{name})。 路由将查找路由集合中的第一个匹配项(在这种情况下,它将是您的EnableFriendlyUrls路由)。

如果你想克服这一点,你可以做到以下几点:

1.Execute routes.MapPageRoute routes.EnableFriendlyUrls(设置)前:

Public Module RouteConfig 
    Public Sub RegisterRoutes(routes As RouteCollection) 
     routes.MapPageRoute("experience-category", "experience/{name}", "~/experience-category.aspx") 'For Experience Category 

     Dim settings = New FriendlyUrlSettings() 
     settings.AutoRedirectMode = RedirectMode.Permanent 
     routes.EnableFriendlyUrls(settings) 

    End Sub 
End Module 

这会先将这个规则,击败了FriendlyUrlSettings:

或者

2.使用插入到路由集合(代替的MapPageRoute)开始插入您的规则:

Dim settings = New FriendlyUrlSettings() 
    settings.AutoRedirectMode = RedirectMode.Permanent 
    routes.EnableFriendlyUrls(settings) 

    Dim overwrExperienceUrl As String = "experience/{name}" 
    Dim overwrExperiencePRH As New PageRouteHandler("~/experience-category.aspx") 
    Dim overwrExperienceRoute As New Route(overwrExperienceUrl, overwrExperiencePRH) 
    routes.Insert(0, overwrExperienceRoute) 

3.Avoid一个与之相匹配的EnableFriendlyUrl路由规则:

移动你的控制(S)(Experience.aspx)到一个文件夹,这样就不会在这种情况下干涉。

相关问题