.NET Core MVC路由
.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
上一篇: MySQL的字符集操作命令总结
下一篇: 详解Android 传感器开发 完全解析