【问题标题】:ASP.NET webforms 4.5 MapPageRoute Route Constraint w/ regex not working带有正则表达式的 ASP.NET webforms 4.5 MapPageRoute 路由约束不起作用
【发布时间】:2013-10-21 22:13:07
【问题描述】:

我正在尝试让路由约束与使用 REGEX 路由的路径中的 GUID 一起工作,但看不到哪里出错了。

url 被重新路由到正确的页面,但正则表达式被完全忽略(我可以放入任何垃圾并且它匹配所有内容)。

这是代码:(注意 - 这不是 MVC,而是 ASP.Net 4.5 上的网络表单)

Imports System.Web.Routing
Imports Microsoft.AspNet.FriendlyUrls

Public Module RouteConfig
Sub RegisterRoutes(ByVal routes As RouteCollection)
    routes.EnableFriendlyUrls()

    Dim guidRegex As String = "^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$"
    routes.MapPageRoute("Redirect", "r/{lid}", "~/redirect.aspx", True, New RouteValueDictionary(New With {.lid = guidRegex}))
End Sub

End Module

我已经在其他正则表达式中尝试过这种技术(示例直接从 Microsoft 网站复制),但它也不起作用。 我做错了什么,但我无法弄清楚。

【问题讨论】:

    标签: asp.net regex vb.net webforms url-routing


    【解决方案1】:

    我知道这已经是将近 2.5 年之后了,对于延迟回复您,我深表歉意……但是,我今天第一次在 ASP.Net 4.5 网络表单中尝试了路由,结果我偶然发现了你今天的答案。因此,如果其他人(例如我下次遇到这种情况时)觉得它有用,我会发布它。

    您的正则表达式不起作用的原因是您缺少 Microsoft 示例中包含的内容……默认值。 MapPageRoute 方法实际上包含多达六个参数:名称、URL 模式、物理文件、是否要检查文件是否存在、默认值和约束。)

    在您上面的示例中,您的正则表达式被应用为默认值,而不是您可能期望的约束;这让我花了大约 2.5 小时。因此,为了让您的示例正常工作,您需要添加默认值。由于您没有任何默认值,因此您可以添加 Nothing 并且它会起作用。

    使用您的示例,并修改一行:

    Imports System.Web.Routing
    Imports Microsoft.AspNet.FriendlyUrls
    
    Public Module RouteConfig
    Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.EnableFriendlyUrls()
    
        Dim guidRegex As String = "^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$"
        routes.MapPageRoute("Redirect", "r/{lid}", "~/redirect.aspx", True, Nothing, New RouteValueDictionary(New With {.lid = guidRegex}))
    End Sub
    
    End Module
    

    因此,您的答案是......从字面上看......什么都没有。

    【讨论】:

    • 有趣的是,几周前我重新启动了这个项目(个人项目,但过去 2.5 年的工作让我从事其他工作),我才再次回到这个问题。跨度>
    猜你喜欢
    • 2019-02-10
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    相关资源
    最近更新 更多