2016-12-17 121 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)到一個文件夾,這樣就不會在這種情況下干涉。

相關問題