找回密码
 会员注册
查看: 120|回复: 0

ASP.NET Core MVC之route简单路由配置

[复制链接]

250

主题

1

回帖

819

积分

管理员

积分
819
发表于 2024-2-29 08:16:30 | 显示全部楼层 |阅读模式

ASP.NET Core MVC的路由配置一般分为两种,约定路由和特性路由。下面分别介绍两种路由的配置方法。
一:约定路由
约定路由顾名思义,是我们约定好的路由规则,程序根据约定,访问对应的controller,首先建立一个ASP.NET Core Web项目,选择空模板,在Startup类中的ConfigureServices方法中注册MVC服务。

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.AddMvc();
  4. }
复制代码

然后在Configure方法中使用mvc中间件,并添加路由规则
1.使用默认路由方法:

  1. //默认mvc路由
  2. //app.UseMvcWithDefaultRoute();
复制代码

UseMvcWithDefaultRoute方法为默认路由,反编译源码如下:

  1. public static IApplicationBuilder UseMvcWithDefaultRoute(
  2. this IApplicationBuilder app)
  3. {
  4. if (app == null)
  5. throw new ArgumentNullException(nameof (app));
  6. return app.UseMvc((Action<IRouteBuilder>) (routes => routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}")));
  7. }
复制代码

我们由此可以看到,它的路由规则为默认home/index,id可为空,即如果url为localhost:2222/,那么他会默认寻找homeController的Index方法,当然如果url为localhost:/2222/about/me,那么他会访问aboutController的Me方法。
2.自定义路由规则
我们可以在mvc中间件中定义路由规则,代码如下:

  1. app.UseMvc(builder =>
  2. {
  3. //按约定配置路由
  4. //Home/Index->HomeController Index(3)
  5. //默认值为Home,Index
  6. //builder.MapRoute("Default", "{controller=Home}/{action=Index}/{id?}");
  7. });
复制代码

如上,我们也可以设置默认值,但相对较灵活。
二.特性路由
我们可以在Controller文件中利用attribute特性配置路由,例:

  1. [Route("")]//特性配置路由,留空为默认访问此Controller
  2. public class AboutController
  3. {
  4. [Route("")]//特性配置路由,留空为默认访问此action
  5. public string Me()
  6. {
  7. return "mike";
  8. }
  9. [Route("company")]
  10. public string Company()
  11. {
  12. return "no company";
  13. }
  14. }
复制代码

如上代码,AboutController的route内容为“”,即为默认访问次controller,action同理,如不设置默认,则可加上名称,即

  1. [Route("about")]//特性配置路由,留空为默认访问此Controller
  2. public class AboutController
  3. {
  4. [Route("me")]//特性配置路由,留空为默认访问此action
  5. public string Me()
  6. {
  7. return "mike";
  8. }
  9. [Route("company")]
  10. public string Company()
  11. {
  12. return "no company";
  13. }
  14. }
复制代码

这样,url为localhost:2222/about/me就能访问此controller的me方法。
更为灵活的配置如下:

  1. [Route("[controller]/[action]")]//特性配置路由,
  2. public class OtherController
  3. {
  4. public string Me()
  5. {
  6. return "zfy";
  7. }
  8. public string Company()
  9. {
  10. return "no company";
  11. }
  12. }
复制代码

如此配置,程序会根据url来寻找对应的controller和action。
一般webapi会用特性路由配置。
注意:两种配置方法不能共存,只能选用一种。


来源:https://blog.csdn.net/weixin_39714231/article/details/87257220
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 00:00 , Processed in 0.451877 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表