.net core3.x路由
原文链接:https://blog.csdn.net/qq_18932003/article/details/119975014
匹配单个路由
匹配固定的单个路径
endpoints.MapControllerRoute(
name: "AA",
pattern: "About",
defaults: new { controller = "About", action = "Index" });
action和controller交换顺序
action和controller交换顺序,自定义路由模块如下 把两个顺序互换即可。
endpoints.MapControllerRoute(
name: "BB",
pattern: "{action=Index}/{controller=Home}/{id?}");
只限制控制器
因为只能输入控制器,action不能输入,所以action只能是默认的index,action恒等于index如果你输入的是:/home,其实访问的就是home/index(默认的)如果你输入的是:/news,其实访问的就是news/index(默认的)
endpoints.MapControllerRoute(
name: "AA",
pattern: "{controller=Home}",
defaults: new { controller = "Home", action = "Index" });
自定义地址规则
控制器就是死的,控制器只能是home,不是mylove,mylove只是我自己写死的路由规则。
必须满足自己定义的规则
endpoints.MapControllerRoute(
name: "AA",
pattern: "mylove/{action}",
defaults: new { controller = "Home", action = "Index" });
上面几个定义完整点的代码
app.UseEndpoints(endpoints =>
{
//匹配单个路由
endpoints.MapControllerRoute(
name: "AA",
pattern: "About",
defaults: new { controller = "About", action = "Index" });
//只限制控制器
endpoints.MapControllerRoute(
name: "AA",
pattern: "{controller=Home}",
defaults: new { controller = "Home", action = "Index" });
//自定义地址规则
endpoints.MapControllerRoute(
name: "AA",
pattern: "mylove/{action}",
defaults: new { controller = "Home", action = "Index" });
//action和controller交换顺序
endpoints.MapControllerRoute(
name: "BB",
pattern: "{action=Index}/{controller=Home}/{id?}");
//默认路由
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
路由约束
约束路由参数必须是整形,bool,时间,小数,字符串限制等等
//约束参数id必须是整数
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id:int?}");
//约束active参数必须是bool值
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{active:bool?}");
//路由约束 - 匹配decimal
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{price:decimal?}");
//路由约束 - 匹配字符串长度
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{username:minlength(4?}");
路由约束使用正则表达式
代码如下:
endpoints.MapControllerRoute(
name: "people",
pattern: "People/{ssn}",
constraints: new { ssn = "^\\d{3}-\\d{2}-\\d{4}$", },
defaults: new { controller = "People", action = "List", });
能正确匹配的格式如下:
其他一些自定义路由
endpoints.MapControllerRoute(
name: "UserCategory",
pattern: "{UserName?}/AA/Category/{id?}",
defaults: new { controller = "Category", action = "Category" }
);
endpoints.MapControllerRoute(
name: "Show",
pattern: "{UserName?}/AA/BB/{id?}",
defaults: new { controller = "ArticleDetails", action = "Index" }
);
endpoints.MapControllerRoute(
name: "Resource",
pattern: "Resource/Show/{UserName?}/{id?}",
defaults: new { controller = "Resource", action = "Show" }
);
endpoints.MapControllerRoute(
name: "Search",
pattern: "{UserName?}/search",
defaults: new { controller = "Search", action = "UserSearch" }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2023-06-28 从数据类型 varchar 转换为 numeric 时出错
2023-06-28 根据时间段计算工作日的天数(SqlServer),包含节假日的处理