我在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_\-\|]*$"
答案 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