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项目用的较多。

原文地址:https://www.cnblogs.com/heheblog/p/11001190.html

时间: 2024-10-13 02:07:23

ASP.NET Core MVC 中两种路由的简单配置的相关文章

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

与Asp.Net Mvc创建区域的时候会自动为你创建区域路由方式不同的是,Asp.Net Core下需要自己手动做一些配置,但更灵活了. 我们先创建一个区域,如下图 然后我们启动访问/Manage/Home/Index 发现是404没有找到该页面,因为我们还没有为其配置路由,下面使用两种配置区域路由的方式 1.通过配置MapRoute app.UseMvc(routes => { routes.MapRoute( name: "default", template: "

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 views and layout pages 修改视图和布局页 2.Change the title and menu link in the layout file 在布局文件中修改标题与菜单 3.Passing Data from the Controller to the View 从控制器向视图

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

在ASP.NET Core MVC中,我们有时候需要在Controller的Action中直接输出数据到Response.Body这个Stream流中,例如如果我们要输出一个很大的文件到客户端浏览器让用户下载,那么在Controller的Action中用Response.Body这个Stream流,来逐步发送文件数据到客户端浏览器是最好的办法. 但是我今天在ASP.NET Core MVC的Controller的Action中使用Response.Body输出数据到客户端浏览器的时候遇到了个问题

asp.net core mvc中如何把二级域名绑定到特定的控制器上

由于公司的工作安排,一直在研究其他技术,所以一直没时间更新博客,今天终于可以停下手头的事情,写一些新内容了. 应用场景:企业门户网站会根据内容不同,设置不同的板块,如新浪有体育,娱乐频道,等等.有的情况下需要给不同的板块设置不同的二级域名,如新浪体育sports.sina.com.cn. 在asp.net core mvc中,如果要实现板块的效果,可能会给不同的板块建立不同的控制器(当然也有其他的技术,这里不讨论实现方式的好坏),在这种情况下,如何给控制器绑定上独有的二级域名,比如体育频道对应的

ASP.NET Core MVC中URL和数据模型的匹配

Http GET方法 首先我们来看看GET方法的Http请求,URL参数和ASP.NET Core MVC中Controller的Action方法参数匹配情况. 我定义一个UserController,其中有一个只接受GET请求的Action方法GetDataInPage public class UserController : Controller { [HttpGet] public IActionResult GetDataInPage(string languageCode, int

struts2中两种validation.xml的配置方式_百度文库

在struts中,根据配置的validation.xml文件进行页面输入项目的验证已经众所周知,本文介绍在struts2中两种validation.xml的配置方式.可以根据不同的需要进行不同的配置. 以下以login页面输入firstname,lastname,和age为例进行说明.struts.xml中,成功的话转向成功页面.不成功的话转回到原页面. 首先建立userbean文件.文件名:UserBean.java包:struts2.login.bean文件内容:package struts

ASP.NET Core MVC/WebAPi如何构建路由?

前言 本节我们来讲讲ASP.NET Core中的路由,在讲路由之前我们首先回顾下之前所讲在ASP.NET Core中的模型绑定这其中有一个问题是我在项目当中遇见的,我们下面首先来看看这个问题. 回顾ASP.NET Core模型绑定 我们有这样一个场景:修改个人资料中的各个属性,此时每个属性的值的类型肯定是不一样的,所以我们将值定义为object,如下model. public class BlogViewModel { public string prop { get; set; } publi

在ASP.NET Core MVC中构建简单 Web Api

Getting Started 在 ASP.NET Core MVC 框架中,ASP.NET 团队为我们提供了一整套的用于构建一个 Web 中的各种部分所需的套件,那么有些时候我们只需要做一个简单的 Web Api 程序怎么办呢? 在 GitHub 中的 ASP.NET Core MVC 源码里面,我们只要关注 Microsoft.AspNetCore.Mvc 这个包,那么除了这个包之外它还包含这些: Microsoft.AspNetCore.Mvc.ApiExplorer Microsoft.

c# – Asp.Net Core MVC中Request.IsAjaxRequest()在哪里?

要了解有关新的令人兴奋的Asp.Net-5框架的更多信息,我正在使用最新发布的Visual Studio 2015 CTP-6来构建一个Web应用程序. 大多数事情看起来真的很有希望,但我似乎找不到Request.IsAjaxRequest() – 一个在旧的MVC项目中经常使用的功能. 有没有更好的方法来做到这一点 – 这使得他们删除这种方法 – 或者是“隐藏”在别的地方? 感谢任何建议,在哪里找到它或做什么改为! 我有点困惑,因为标题提到了MVC 5. 搜索Ajax in the MVC6