.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" }

posted @   yinghualeihenmei  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-06-28 从数据类型 varchar 转换为 numeric 时出错
2023-06-28 根据时间段计算工作日的天数(SqlServer),包含节假日的处理
点击右上角即可分享
微信分享提示