视频地址:
https://www.bilibili.com/video/av38392956/?p=5

这里面就包含了MVC相关的库
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件
可以通过打开右侧的Nuget库进行查看
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_02
这里修改下 ,只需要静态文件就可以了
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_03
加入mvc的中间件,先使用USeMvcWithDefaultRoute()这里面加了一些默认路由的配置
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_asp.net core 2.2_04
直接运行页面,提示报错,无法找到所需的服务
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_05
注册下mvc的服务
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件_06
这样就能运行起来。mvc的服务不是手动添加好的,需要自己添加一下

新建Controllers文件夹,然后在下面新建Controller

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件_07
我们这里从一个类开始,起名叫做HomeController

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_08
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_09
​​​​​​​4分开始

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_asp.net core 2.2_10
运行居然返回了 信息。访问跟路径是走到了HomeController里面
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_asp.net core 2.2_11
所以说使用这个方法就被配置一些默认的路由规则
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_12
比如说访问根路径,就会找到HomeController里面的Index方法

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_13
按照约定路由
属性标签路由
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_14

这就叫做按照约定式配置路由


这里换成UseMVC()。这个方法没有配置默认的路由
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_15
并没有走HomeController
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件_16
在里面配置路由
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_17
接收一个参数Action<IrouteBuilder>
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_18
在这个莱姆达表达式里就可以配置路由了 

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件_19
可以使用这个builder,这个builder的类型是IRouteBuilder
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件_20
使用MapRoute配置路由,当然还有很多Map开头的方法
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件_21
定义参数,这个参数需要用大括号括起来,意思就是告诉框架,url里面的第一部分就是controller的名字
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_22
第二个部分是Action
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_23
通常都带一个参数,例如这里带个参数id,这个id是可选的,所以在id后面加一个问号
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_24
再次运行,输入Home/Index 就看到我们写的返回的字符串数据
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件_25

设置默认的Controller

之前使用的是UseMvcDefaultRoute可以默认执行Home/index的方法,我们进去看下它的源码是怎么设置的
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_26
这里给Controller和action加了默认值
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件_27
我们直接复制过来,也加上默认值,如果Controller和Action没有就调用默认的值
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_28
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_29
再次运行可以看到结果了
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_30
光输入Controller为home同样可以打开 地址
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件_31
完整的路径 也没问题
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_asp.net core 2.2_32
再添加一个类AboutController
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_asp.net core 2.2_33
里面定义两个方法
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_34
然后运行页面
About/me
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_35

属性标签式路由

Route属性可以放到Action级别也可以放到Controller的界别
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_36
比如说想通过访问/About访问到Me这个action
这么配置的路径就是/About/me
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_37
想直接访问到About就能访问me的方法 就留空
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_38
运行抛出异常
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_39
有多个Action匹配这个路由
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_asp.net core 2.2_40
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_41
再次运行,输入about顺利找到me这个方法
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_42
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_43
中括号+Controller代表就代表About(也就是这个Controller的名字)
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_44
测试下
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_asp.net core 2.2_45

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_asp.net core 2.2_46
改名了那么他对应路径也改名了。
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_47
输入改名后的Contact才能找到

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_48

针对Action,

中括号+Action
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_49
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_静态文件_50
这样就使用每个方法名作为他的路径
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_51
简写的方式提到最上面
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_数据_52

加版本参数

在前面加上V2
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_默认值_53
路径前面必须带V2才能正常访问
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由_mvc_54
通常mvc选择第一种方式

webapi选择第二种属性标签的配置方式