ASP.NET Core MVC 中两种路由的简单配置
1.全局约定路由
这种方式配置优先级比较低,如果控制器或者方法上标记了特性路由那么优先走特性路由。
当建立好一个mvc项目里,路由都是默认配置好的。

如果建立的是空项目那么需要手动配置:
1.需要在ConfigureServices方法中添加mvc服务
services.AddMvc();
2.在Configure添加mvc中间件:
app.UseMvcWithDefaultRoute(); //添加mvc中间件并使用默认路由配置
这里添加mvc中间时使用的是默认的路由配置,默认的路由配置就是跟上图的一样。如果url地址栏controller为空那么默认为home,action为空那么默认为index方法,最后一个/id是可空的(带?代表可空的,正则约束)。当然也可以自定义一些路由:
app.UseMvc(builder =>
{
builder.MapRoute("default", "{controller=Home}/{action=Index}/{Id?}"); //添加mvc中间件并使用自定义路由配置 builder.MapRoute("areas", "{area:exists}/{controller=Home}/{action=Index}/{Id?}"); //区域路由配置
});
这里区域路由配置中的 {area:exists} 这个exists不仅可以路由参数能从Url地址匹配到值还要确保路由参数值在项目中能找到真正的文件夹或文件,这样整个路由才算匹配成
2.特性标记路由
特性标记路由是使用Route特性标记在标记在控制器或者方法上的,Route必须传入一个参数,该参数为字符串
如图:

如果Route标记在控制器上,那么需要传入参数则为匹配的控制器名,
如果Route标记在控制器上,那么需要传入参数则为匹配方法名。
如果需要配置类似默认路由配置那样方法名为空就默认匹配某个方法时,则不在方法配置或者配置空字符串即可(注意:如果出现多个不配置或者配置空字符串时则无法匹配,出现异常):

如果想默认使用控制器名称和方法名称作为匹配规则可以这样来配置:

也可以直接在控制器上这样配置:
[Route("[Controller]/[Action]")]

区域配置,前面我们已经添加了区域路由配置。我们只需要添加区域然后添加控制器即可。在控制器上使用Area特性标记区域名称即可:

第二种方法在mvc中用的不多且通过使用默认的配置足矣,在无法满足需求时可自定义路由规则,一般webapi项目用的较多。
ASP.NET Core MVC 中两种路由的简单配置的更多相关文章
- Asp.Net Core下的两种路由配置方式
与Asp.Net Mvc创建区域的时候会自动为你创建区域路由方式不同的是,Asp.Net Core下需要自己手动做一些配置,但更灵活了. 我们先创建一个区域,如下图 然后我们启动访问/Manage/H ...
- 006.Adding a controller to a ASP.NET Core MVC app with Visual Studio -- 【在asp.net core mvc 中添加一个控制器】
Adding a controller to a ASP.NET Core MVC app with Visual Studio 在asp.net core mvc 中添加一个控制器 2017-2-2 ...
- ASP.NET Core MVC 中的 [Controller] 和 [NonController]
前言 我们知道,在 MVC 应用程序中,有一部分约定的内容.其中关于 Controller 的约定是这样的. 每个 Controller 类的名字以 Controller 结尾,并且放置在 Contr ...
- 008.Adding a model to an ASP.NET Core MVC app --【在 asp.net core mvc 中添加一个model (模型)】
Adding a model to an ASP.NET Core MVC app在 asp.net core mvc 中添加一个model (模型)2017-3-30 8 分钟阅读时长 本文内容1. ...
- 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】
Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加视图 2017-3-4 7 分钟阅读时长 本文内容 1.Changing vi ...
- 在ASP.NET Core MVC中子类Controller拦截器要先于父类Controller拦截器执行
我们知道在ASP.NET Core MVC中Controller上的Filter拦截器是有执行顺序的,那么如果我们在有继承关系的两个Controller类上,声明同一种类型的Filter拦截器,那么是 ...
- ASP.NET Core MVC中Controller的Action,默认既支持HttpGet,又支持HttpPost
我们知道ASP.NET Core MVC中Controller的Action上可以声明HttpGet和HttpPost特性标签,来限制可以访问Action的Http请求类型(GET.POST等). 那 ...
- ASP.NET Core MVC中Controller的Action如何直接使用Response.Body的Stream流输出数据
在ASP.NET Core MVC中,我们有时候需要在Controller的Action中直接输出数据到Response.Body这个Stream流中,例如如果我们要输出一个很大的文件到客户端浏览器让 ...
- ASP.NET Core MVC中的 [Required]与[BindRequired]
在开发ASP.NET Core MVC应用程序时,需要对控制器中的模型校验数据有效性,元数据注释(Data Annotations)是一个完美的解决方案. 元数据注释最典型例子是确保API的调用者提供 ...
随机推荐
- SQL注入:显错注入
SQL注入的本质 就是把用户输入的数据当做代码执行 注入条件 1.用户能控制输入 2.能够将程序原本执行的代码,拼接上用户输入的数据进行执行 例: http://www.xxx.com/new.php ...
- Linux CentOS 防止SSH暴力破解
一. 问题的发现 昨晚苦逼加班完后,今早上班继续干活时,SSH连接服务器发现异常的提示,仔细看了一下吓一小跳,昨晚9点钟到现在,一夜之间被人尝试连接200+,慌~~~ 1. 速度查一下log [roo ...
- Apicloud微信支付iOS可以,安卓返回-1的之避坑指南
相信各位小伙伴在接入微信支付的时候,一定遇到过返回-1的这个问题,说实话,这个问题真的很恶心,微信开放平台提供的文档在关于-1这个问题的描述(可能的原因:签名错误.未注册APPID.项目设置APPID ...
- udf文件十六进制
如下为网上找的前辈们的UDF(以做记录) set @a = unhex('7F454C4602010100000000000000000003003E0001000000800A00000000000 ...
- Flask框架整理及配置文件
阅读目录 Flask目录结构(蓝图) pro_flask包的init.py文件, 用于注册所有的蓝图 manage.py文件,作为整个项目的启动文件 views包中的blog.py,必须要通过sess ...
- 201871010136-赵艳强《面向对象程序设计(Java)》第八周学习总结
201871010136-赵艳强<面向对象程序设计(Java)>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...
- Nginx配置参数中文详细说明
#定义Nginx运行的用户和用户组user www www;##nginx进程数,建议设置为等于CPU总核心数.worker_processes 8;##全局错误日志定义类型,[ debug | in ...
- (translation.E004) You have provided a value for the LANGUAGE_CODE setting that is not in the LANGUAGES setting.
django3.0开始LANGUAGE_CODE前面必须配相应的LANGUAGES配置如下: from django.utils.translation import gettext_lazy as ...
- T430 Linux Setting Memo
touchpad:xinput listxinput --disable 11 dns setting:/etc/resolv.conf vpn:@Darkduck19XX yum-config-ma ...
- Debian 9 部分快捷键失效问题
教程 具体修复过程: 安装gnome-screensaver包,重启恢复正常.