这些运营商做了什么?

时间:2013-06-06 11:53:11

标签: asp.net-mvc regex vb.net url

我在MVC中工作,需要将博客网址从/about/blog改为/blog ...说起来容易做起来难哈哈。

我正在浏览控制器和其他各种.vb文件,试图解决这个问题,并且遇到了URL路由系统。

以下内容之间有什么区别(暂时忽略命名)

    ' Route 1
    routes.MapRoute( _
        "legal", _
        "{action}",
        New With {.controller = "home", .action = "index"},
        New With {.action = "^(terms|privacy|cookies|responsiblegaming|disclaimer|legal|acceptableuse)$"},
        New String() {"ProjectMVC"}
    )

    ' Route 2
    routes.MapRoute( _
        "legal", _
        "{action}",
        New With {.controller = "home", .action = "index"},
        New With {.action = "^[a-zA-Z_]+$", .slug = "^[a-zA-Z][a-zA-Z0-9_\-\|]*$"},
        New String() {"ProjectMVC"}
    )

我认为我最困惑的是知道它在寻找和做什么,即 - 这意味着什么"^[a-zA-Z_]+$""^[a-zA-Z][a-zA-Z0-9_\-\|]*$"

1 个答案:

答案 0 :(得分:4)

您正在关注的是路线限制。基本上,您使用约束(在您的情况下这些是正则表达式约束)来告诉路由系统在哪些条件下可以调用这些路由。

第一个RegEx值^[a-zA-Z_]+$表示“一个动作可以以括号之间定义的任何字符开始和结束。这些只能通过小字母 a z ,大写字母 A Z ,以及一个下划线字符。重复一次或多次。“

技术上更精确“在给定类[a-zA-Z_]中定义的任何字符一次或多次。”

另一个值为^[a-zA-Z][a-zA-Z0-9_\-\|]*$表示“slu a必须以 a z 或大写字母 A 开头和结尾>到 Z ,之后它可以包含零个或多个字符,范围 a z A Z ,或0至9之间的数字,或下划线,短划线或管道“。

就是这样。您可能想要了解有关正则表达式的更多信息。检查此网站 Regular Expressions