我在asp.net网站表单中有网站。它使用url友好的结构。假设我有网址 www.site.com/experience/experience-category 。这里有两种不同的页面体验和经验类。现在每当我尝试访问此网址 www.site.com/experience/experience-category 时,它都不会显示此页面。它向我展示了www.site.com/experience页面。如何解决这个问题?
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
答案 0 :(得分:1)
你可以做很多事情。
routes.EnableFriendlyUrls(settings)
基本上做的是为路线集添加2条路线。
您的问题是您的.aspx(experience.aspx)与您设置的路径网址(experience/{name}
)的名称相同。
路由将查找路由集合中的第一个匹配项(在这种情况下,它将是您的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:
或
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)
将您的控件(Experience.aspx)移动到一个文件夹,以便在这种情况下不会干扰。