【问题标题】:Dynamic URL Routing not working with ASP.NET Web forms site动态 URL 路由不适用于 ASP.NET Web 表单站点
【发布时间】:2016-12-18 11:01:47
【问题描述】:

我在 asp.net 网络表单中有网站。它使用 url 友好的结构。假设我有网址 www.site.com/experience/experience-category。这里有两个不同的页面体验和体验类别。现在,每当我尝试访问此网址 www.site.com/experience/experience-category 时,它都不会显示此页面。它向我展示了 www.site.com/experience 页面。如何解决?

路由配置

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

【问题讨论】:

    标签: asp.net vb.net url-routing routeconfig


    【解决方案1】:

    你可以做很多事情。

    routes.EnableFriendlyUrls(settings) 基本上所做的就是将 2 条路线添加到您的路线集合中。

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

    如果您想克服这个问题,可以执行以下操作:

    1.在routes.EnableFriendlyUrls(settings)之前执行routes.MapPageRoute:

        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。使用 insert 在路由集合的开头插入您的规则(而不是 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.避免与EnableFriendlyUrl路由规则匹配:

    将您的控件 (Experience.aspx) 移动到文件夹中,以免在这种情况下发生干扰。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多