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 中两种路由的简单配置的更多相关文章

  1. Asp.Net Core下的两种路由配置方式

    与Asp.Net Mvc创建区域的时候会自动为你创建区域路由方式不同的是,Asp.Net Core下需要自己手动做一些配置,但更灵活了. 我们先创建一个区域,如下图 然后我们启动访问/Manage/H ...

  2. 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 ...

  3. ASP.NET Core MVC 中的 [Controller] 和 [NonController]

    前言 我们知道,在 MVC 应用程序中,有一部分约定的内容.其中关于 Controller 的约定是这样的. 每个 Controller 类的名字以 Controller 结尾,并且放置在 Contr ...

  4. 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. ...

  5. 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 ...

  6. 在ASP.NET Core MVC中子类Controller拦截器要先于父类Controller拦截器执行

    我们知道在ASP.NET Core MVC中Controller上的Filter拦截器是有执行顺序的,那么如果我们在有继承关系的两个Controller类上,声明同一种类型的Filter拦截器,那么是 ...

  7. ASP.NET Core MVC中Controller的Action,默认既支持HttpGet,又支持HttpPost

    我们知道ASP.NET Core MVC中Controller的Action上可以声明HttpGet和HttpPost特性标签,来限制可以访问Action的Http请求类型(GET.POST等). 那 ...

  8. ASP.NET Core MVC中Controller的Action如何直接使用Response.Body的Stream流输出数据

    在ASP.NET Core MVC中,我们有时候需要在Controller的Action中直接输出数据到Response.Body这个Stream流中,例如如果我们要输出一个很大的文件到客户端浏览器让 ...

  9. ASP.NET Core MVC中的 [Required]与[BindRequired]

    在开发ASP.NET Core MVC应用程序时,需要对控制器中的模型校验数据有效性,元数据注释(Data Annotations)是一个完美的解决方案. 元数据注释最典型例子是确保API的调用者提供 ...

随机推荐

  1. Django restframework 序列化之 ModelSerializer 小记

    首先介绍一下相关概念 序列化器(Serializer) 1. 自定义型:  继承rest_framework.serializers.Serializer 2. 模型类型:  继承rest_frame ...

  2. windows经典主题 桌面颜色(R58 G110 U165)

  3. Skyshop.代码解析

    MarmosetInput.cginc: Input结构定义: struct Input { #if defined(MARMO_PACKED_UV) || defined(MARMO_PACKED_ ...

  4. Alpha版本1发布

    这个作业属于哪个课程 课程的链接 这个作业的要求在哪里 作业要求的链接 团队名称 西柚三剑客 这个作业的目标 -Alpha版本发布说明 1. 团队成员的学号列表 团队成员 学号 whisperzxx( ...

  5. JAVAWEB复习笔记-day02

    1.CSS样式优先级 优先级:由上到下,由外到内.优先级越来越高 2.css选择器 html标签选择器 class选择器(.) id选择器(#) 3.优先级 style属性>id选择器>c ...

  6. JS高阶---instanceof

    一句话: .

  7. 201871010121 王方 《面向对象程序设计(Java)》第6-7周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  8. 201871020225-牟星源《面向对象程序设计(java)》第十六周学习总结

    201871020225-牟星源<面向对象程序设计(java)>第十六周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  9. oracle中having与where的区别

    1.where 不能放在group by 的后面 2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE 3.WHERE 后面的条件中不能有聚集函 ...

  10. 【电脑】XSHELL破解

    序列号