欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

.NET Core MVC路由

程序员文章站 2024-02-27 19:22:21
...

.NET Core MVC路由

路由

路由:路由是用来把请求映射到路由处理程序。

路由匹配:

一般来说,一个应用会有一个路由集合。接收到的请求会在这个路由集合里按照 URL matching 来查找匹配。一旦某个路由规则匹配成功,则不会再去寻找其他路由;如果所有的路由规则都不匹配,则抛出异常。

举个栗子:

路由模板

routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id?}");

URL路径: /Products/Details/20

URL路径匹配路由模板,得到的路由值是: { controller = Products, action = Details, id = 20}

路由的约束

routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id:int}");

{id:int} 为 id 这个路由参数定义了一个 路由约束,id必须可以转换为整型。

增加路由约束和数据令牌:

路由模板

routes.MapRoute(
    name: "us_english_products",
    template: "en-US/Products/{id}",
    defaults: new { controller = "Products", action = "Details" },
    constraints: new { id = new IntRouteConstraint() },
    dataTokens: new { locale = "en-US" });

对于URL路径: /en-US/Products/5
提取出的值为: { controller = Products, action = Details, id = 5 } 和数据令牌 { locale = en-US }

路由全匹配:

如:blog/{*slug}

将会匹配任何以 /blog 开头且有任何值跟随的URL。
全捕获参数:使用 * 号作为一个路由参数的前缀去绑定其余的 URI。

路由示例和约束示例:

.NET Core MVC路由

.NET Core MVC路由

为约束一个参数是一组可能的值,可以使用正则表达式
(例如 {action:regex(list|get|create)} )。这将只匹配action 的值是 list 、 get 或 create 的URL。

参考文档:

ASP.NET Core 中文文档 第三章 原理(4)路由:
http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-3_4-routing.html