asp.net core mvc之路由

一、默认路由 (Startup.cs文件)

routes.MapRoute(name: "default",template: "{controller=Home}/{action=Index}/{id?}"
);

默认访问可以匹配到
https://localhost:44302/home/index/1
https://localhost:44302/home/index
https://localhost:44302/home
https://localhost:44302

也可以匹配到
https://localhost:44302/course/learn/1

1、创建 course 控制器

Controllers文件夹下右键-,添加控制器->

-》CourseController.cs

->

2、创建learn视图

在Views文件夹下,新建 Course 文件夹,然后右键 。 添加-》视图-》learn.cshtml

@{ViewData["Title"]= "学习";
}<h1>学习页面内容</h1>

二、案例博客路由

1、在 Startup.cs 文件下配置博客路由

//防止输入https://localhost:44302/home跳到博客专用路由
routes.MapRoute(name: "home",template: "home", //https://localhost:44302/home,跳到Home控制器中Index方法defaults: new { controller = "Home", action = "Index" });//博客专用路由
routes.MapRoute(name:"blog",template:"{name}", //https://localhost:44302/博客名,跳到Blog控制器中Index方法defaults: new { controller ="Blog",action="Index"});

2、Controllers文件夹右键,添加-》控制器 BlogController.cs

    public class BlogController : Controller{public IActionResult Index(string name){ViewData["BlogName"] = name;return View();}}

3.Views文件夹下添加Blog文件夹右键,添加-》视图 Index.cshtml

<h1>@ViewData["BlogName"]博客</h1>

三、特性路由

特性路由:在Action添加标注,来指定路由规则

1、Startup.cs 文件中 app.UseMvc(删除全部路由);

2、在Action添加标注

public class HomeController : Controller
{[Route("")][Route("home")][Route("home/index")]public IActionResult Index(){return View();}[Route("home/abc")]//https://localhost:44302/home/abcpublic IActionResult About(){ViewData["Message"] = "Your application description page.";return View();}
}

注意:

A、如果2个方法有相同标注,为防止冲突,可以这样做

[HttpPost("home/abc")]

B、特性路由参数

//学习
[Route("course/learn/{id}")] //https://localhost:44302/course/learn/1
public IActionResult learn(int id)
{return View();
}

四、组合路由

组合路由:在 Controller 和Action 上添加路由标注

//课程
[Route("c")]
public class CourseController : Controller
{[Route("index")] //    https://localhost:44302/c/index[Route("/idd")] // 以/开头的不是组合路由  https://localhost:44302/iddpublic IActionResult Index(){return View();}
}

五、路由模板中使用标记替换


在路由模板中使用
[controller] 表示和控制器同名的名称
[action] 表示和Action同名的名称
[area] 表示和区域同名的名称

[Route("[controller]")]
public class CourseController : Controller
{[Route("[action]")]  // https://localhost:44302/course/indexpublic IActionResult Index(){return View();}
}

还可以在控制器上面使用多个路由特性,实现多个地址匹配一个控制器

[Route("[controller]")]
[Route("more")]  // https://localhost:44302/more/index
public class CourseController : Controller
{[Route("[action]")]  // https://localhost:44302/course/indexpublic IActionResult Index(){return View();}
}

还可以这样写

[Route("[controller]/[action]")] //https://localhost:44302/course/index
//也可以放到方法上
public class CourseController : Controller
{public IActionResult Index(){return View();}
}

六、自定义路由特性

通过创建一个实现了IRouteTemplateProvider的类。然后在类里面配置Template和Order还有Name这三个属性就可以实现特性标注了。

只要那个类或者Action增加了这个自定义标注就可以自动设置上面的Template特性。

1、在项目下添加 core 文件夹,然后添加 MyRouteAttribute.cs 类,实现 IRouteTemplateProvider

namespace FirstCoreMvc.core
{public class MyRouteAttribute : Attribute, IRouteTemplateProvider{public string Template => "www/[controller]/[action]";public int? Order {get;set;}public string Name { get; set; }}
}

2、调用

    public class BlogController : Controller{[MyRoute] //https://localhost:44302/www/blog/indexpublic IActionResult Index(string name){ViewData["BlogName"] = name;return View();}}

七、生成Url

生成url,实际应用在视图中生成链接的地址

public IActionResult Index()
{//return Content(Url.Action("index")); // /home//return Content(Url.Action("index", "home")); //  /homereturn Content(Url.Action("index", "course", new { id = 1, name = "lili" }));// /course/index/1?name=lili 和我想像/course/index?id=1&1name=lili不一样,有人知道吗?}

八、区域的使用

1、点击项目右键-》添加-》新搭建基架的项目-》MVC区域-》添加-》区域名称:Manage

 2、添加控制器视图

namespace FirstCoreMvc.Areas.Manage.Controllers
{[Area("Manage")] //需要添加区域注释,否则会和外边路由冲突public class HomeController : Controller{public IActionResult Index(){return View();}}
}

注意:[Area("Manage")]  需要添加区域注释,否则会和外边路由冲突

3、startup.cs文件中路由设置

//区域路由 放到上面routes.MapAreaRoute("mange_area","Manage","manage/{controller=Home}/{action=Index}/{id?}");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/135769.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生产过程建模在MES管理系统中的重要性

在现代制造业中&#xff0c;为了提升生产效能和满足市场需求&#xff0c;企业纷纷引入MES管理系统解决方案。然而&#xff0c;要成功实施MES管理系统&#xff0c;首要任务是深入理解和有效管理生产过程。为此&#xff0c;建立一个准确且可靠的生产过程模型变得至关重要。 生产…

Web服务器实战

网站需求 1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个网站目录分别显示学生信息&#xff0c;教学资料和缴费网站&#xff0c;基于www.openlab.com/student 网站访问学生信息&#xff0c;www.openlab.com/data网站访问教学资料 www…

【2021研电赛】基于深度学习的蛋白质与化合物结合性质预测

本作品介绍参与极术社区的有奖征集|分享研电赛作品扩大影响力&#xff0c;更有重磅电子产品免费领取! 获奖情况&#xff1a;三等奖 1.作品简介 针对药物发现过程中的药物筛选问题&#xff0c;本设计基于深度学习提出新的神经网络结构和数据处理方式用于预测蛋白质与化合物之…

更改 npm的默认缓存地址

npm的默认缓存一般在C:\Users\用户名\AppData\Roaming路径下的npm和npm_cache&#xff0c;而c盘往往空间不大。 1、在其他盘新建两个文件夹&#xff0c;如D盘&#xff0c;node_cache和node_global。如下图所示。 2、在cmd中执行npm config set prefix “node_cache的路径”&a…

关于AM5-DB低压备自投装置如何应用在某变电站项目的-安科瑞 蒋静

摘 要&#xff1a;随着电力需求的不断增加&#xff0c;电力系统供电可靠性要求越来越高&#xff0c;许多供电系统已具备两回或多回供电线路。备用电源自动投入装置可以有效提高供电的可靠性&#xff0c;该类装置能够在工作电源因故障断开后&#xff0c;自动且迅速地将备用电源投…

什么是进销存系统?有哪些流程?

这篇给大家详细介绍一下&#xff0c;到底什么是进销存系统&#xff0c;它的发展历程如何&#xff1f;企业该如何利用进销存系统获得竞争优势&#xff1f; 至于为什么越来越多的企业都选择进销存系统&#xff0c;让我们先来看一下这个实例。 假设有一家零售超市&#xff0c;他…

目标跟踪(DeepSORT)

本文首先将介绍在目标跟踪任务中常用的匈牙利算法&#xff08;Hungarian Algorithm&#xff09;和卡尔曼滤波&#xff08;Kalman Filter&#xff09;&#xff0c;然后介绍经典算法DeepSORT的工作流程以及对相关源码进行解析。 目前主流的目标跟踪算法都是基于Tracking-by-Detec…

PBJ | IF=13.8 利用ChIP-seq和ATAC-seq技术揭示MdRAD5B调控苹果耐旱性的双重分子作用机制

2023年10月24日&#xff0c;西北农林科技大学园艺学院管清美教授团队在Plant Biotechnology Journal&#xff08;最新IF&#xff1a;13.8&#xff09;上发表题为“The chromatin remodeller MdRAD5B enhances drought tolerance by coupling MdLHP1-mediated H3K27me3 in apple…

计算机网络期末复习-Part1

1、列举几种接入网技术&#xff1a;ADSL&#xff0c;HFC&#xff0c;FTTH&#xff0c;LAN&#xff0c;WLAN ADSL&#xff08;Asymmetric Digital Subscriber Line&#xff09;&#xff1a;非对称数字用户线路。ADSL 是一种用于通过电话线连接到互联网的技术&#xff0c;它提供…

安卓系统手机便签app使用哪一款?

在现代快节奏的生活中&#xff0c;我们经常会遇到各种繁忙的事务和容易遗忘的备忘事项。为避免大家遗忘重要的事情&#xff0c;大家可以在常用的手机上安装记录备忘事项的工具&#xff0c;为了帮助安卓用户高效地记录和管理这些信息&#xff0c;今天我将向大家推荐一款功能强大…

关于炒股融资的条件,3个你不知道的小知识

随着投资者对股市的关注度不断提高&#xff0c;炒股融资成为了常见的投资方式&#xff0c;但是很多投资者对炒股融资的条件了解不够。下面给大家介绍三个你可能不知道的小知识。 融资比例的计算方式 融资比例指的是投资者可以借的资金比例&#xff0c;其计算方式是融资金额除以…

uniapp小程序接入腾讯云【增强版人脸核身接入】

文档地址&#xff1a;https://cloud.tencent.com/document/product/1007/56812 企业申请注册这边就不介绍了&#xff0c;根据官方文档去申请注册。 申请成功后&#xff0c;下载【微信小程序sdk】 一、解压sdk&#xff0c;创建wxcomponents文件夹 sdk解压后发现是原生小程序代…

程序员副业之路,今天花几分钟提现了18.1元,感觉认真做收益还是不错的

干客户端这么多年了&#xff0c;越来越觉得力不从心了&#xff0c;以前加班到半夜&#xff0c;睡一觉第二天又生龙活虎继续干&#xff0c;现在时常感叹&#xff1a;年轻就是好呀&#xff0c;有使不完的劲&#xff0c;就像下面这位兄弟这样&#xff0c;跪着都能给你把代码写完。…

Halcon如何使用SaperaLT库连接dalsa相机

halcon安装好的时候&#xff0c;没有带SaperaLT的采集库&#xff0c;需要额外在Halcon官网下载此库。 以下是halcon官网下载此库的链接。官网需要注册才可以下载。 https://www.mvtec.com/downloads/interfaces?tx_mvtecproduct_extensiondownloadlist%5Bfilter%5D%5B0%5Dma…

CC1101 一款低功耗sub- 1ghz收发器芯片 适用于无线遥控智能家居

产品描述 CC1101是一个低成本的sub- 1ghz收发器,专为极低功耗的无线应用而设计。 该电路主要用于工业、科学和医学)和SRD (Short Range Device)频带,在315,433,868和915兆赫&#xff0c;但可以轻松可编程用于其他操作频率在300-348 MHz、387-464 MHz,以及779-928 MHz频段。射…

Vulnhub靶场之Funbox

正如该靶场的描述所说&#xff0c;它对初学者来说非常简单。 项目地址&#xff1a;Funbox: Scriptkiddie ~ VulnHub 所需工具&#xff1a; KaliLinux即可。 0x00 信息收集 打开虚拟机后使用nmap扫描一下网段存活&#xff0c;这里我给的虚拟机的范围是100-253,其中kali的IP是10…

16 _ 二分查找(下):如何快速定位IP对应的省份地址?

通过IP地址来查找IP归属地的功能,不知道你有没有用过?没用过也没关系,你现在可以打开百度,在搜索框里随便输一个IP地址,就会看到它的归属地。 这个功能并不复杂,它是通过维护一个很大的IP地址库来实现的。地址库中包括IP地址范围和归属地的对应关系。 当我们想要查询202…

uniapp在不需要后端数据的情况下 怎么记录用户进一次记录一次

目录 前言&#xff1a; html部分 js部分 完整代码 前言&#xff1a; 一时兴起&#xff0c;不喜勿喷&#xff0c;今天听到了这个问题想到了一个方法&#xff0c;解决方式如下。 html部分 他用于显示访问次数&#xff08;visitCount变量的值&#xff09;。 <template&…

【Docker】iptables命令的使用

iptables是一个非常强大的Linux防火墙工具&#xff0c;你可以使用它来控制网络流量的访问和转发。 前面已经学习了iptables的基本原理&#xff0c;四表五链的基本概念&#xff0c;也已经安装好了iptables&#xff0c;下面我们主要学习iptables命令的基本使用。 可以使用iptable…

【MySQL日志与备份篇】数据库备份与恢复

数据库备份与恢复 文章目录 数据库备份与恢复1. 物理备份与逻辑备份2. mysqldump实现逻辑备份2.1 备份一个数据库2.2 备份全部数据库2.3 备份部分数据库2.4 备份部分表2.5 备份单表的部分数据2.6 排除某些表的备份2.7 只备份结构或只备份数据2.8 备份中包含存储过程、函数、事件…