.NET Core MVC路由

来源:互联网 发布:php中while的用法 编辑:程序博客网 时间:2024/05/29 16:57

.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。

路由示例和约束示例:

路由示例

路由约束

为约束一个参数是一组可能的值,可以使用正则表达式
(例如 {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

原创粉丝点击