ASP.NET Core 属性路由 - ASP.NET Core 基础教程 - 简单教程,简单编程

简介: 原文:ASP.NET Core 属性路由 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 属性路由 经过前面章节的学习,想必你已经对 ASP.NET Core MVC 中的路由有了大概的了解,本来我想多花几章节来讲解路由规则,但是,作为基础教程,我们还是讲解下一个知识点吧。

原文:ASP.NET Core 属性路由 - ASP.NET Core 基础教程 - 简单教程,简单编程

ASP.NET Core 属性路由

经过前面章节的学习,想必你已经对 ASP.NET Core MVC 中的路由有了大概的了解,本来我想多花几章节来讲解路由规则,但是,作为基础教程,我们还是讲解下一个知识点吧。

在本章中,我们将学习另一种路由方法,即基于属性的路由。

属性路由

通过基于属性的路由,我们可以在控制器类和这些类的内部方法上使用 C# 属性。 这些属性携带了告诉 ASP.NET Core 何时调用特定控制器的元数据

  1. 属性路由是基于约定的路由的替代方案
  2. 路由按照它们出现的顺序进行评估,也就是我们注册它们的顺序,映射多个路由的情况相当普遍,特别是如果我们想在 URL 中使用不同的参数或者如果要在 URL 中使用不同的文字

我们举一个简单的例子。

打开并运行 HelloWorld 项目,然后在浏览器中访问应用程序。当我们访问 / about 时,它会产生下面的输出

我们想要的是,当我们访问 /about 时,应用程序应该调用 AboutControllerPhone 方法

针对这种情况,我们可以使用 Microsoft.AspNetCore.Mvc 命名空间下的 Route 属性为该控制器强制执行一些显式路由

下面的代码是添加了属性路由的 AboutController 的实现

using System;
using Microsoft.AspNetCore.Mvc; namespace HelloWorld.Controllers {  [Route("about")] public class AboutController { public AboutController() { }  [Route("")] public string Phone() { return "+10086"; }  [Route("country")] public string Country() { return "中国"; } } } 

在这里,我们给 Phone() 方法添加了一个空的路由属性,这意味用户只需要访问 /about,而不需要指定操作就可以访问此方法。对于 country 方法,我们在路由属性中指定了 country

保存下 AboutController.cs ,刷新浏览器并访问 /about,我们可以看到正常输出了电话号码

如果我们访问 /about/country ,那么这将访问 AboutController 控制器中的 Country() 方法

如果希望 URL 的一段包含我们的控制器的名称,那么我们可以不直接显示指定控制器的名称,取而代之的是在方括号内使用令牌控制器,这用于告诉 ASP.NET MVC 在此位置使用此控制器的名称

如以下程序中所示

using System;
using Microsoft.AspNetCore.Mvc; namespace HelloWorld.Controllers {  [Route("[controller]")] public class AboutController { public AboutController() { }  [Route("")] public string Phone() { return "+10086"; }  [Route("[action]")] public string Country() { return "中国"; } } } 

使用这种方式,即使我们重命名路由器,也不必去更改路由。 对于一个动作也是一样,并且隐式地在控制器和动作之间有一个斜杠 ( / ) 。 它是控制器和动作之间的层次关系,就像它在 URL 中一样

我们再次保存这个 AboutController.cs 文件,重新运行应用程序,我们会看到相同的结果

如果我们访问 /about/country ,那么这将访问 AboutController 控制器中的 Country() 方法

目录
相关文章
|
1月前
|
消息中间件 前端开发 小程序
一个基于.NET Core构建的简单、跨平台、模块化的商城系统
今天大姚给大家分享一个基于.NET Core构建的简单、跨平台、模块化、完全开源免费(MIT License)的商城系统:Module Shop。
|
1月前
|
算法 C# 数据库
【干货】一份10万字免费的C#/.NET/.NET Core面试宝典
C#/.NET/.NET Core相关技术常见面试题汇总,不仅仅为了面试而学习,更多的是查漏补缺、扩充知识面和大家共同学习进步。该知识库主要由自己平时学习实践总结、网上优秀文章资料收集(这一部分会标注来源)和社区小伙伴提供三部分组成。该份基础面试宝典完全免费,发布两年来收获了广大.NET小伙伴的好评,我会持续更新和改进,欢迎关注我的公众号【追逐时光者】第一时间获取最新更新的面试题内容。
|
1月前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
4月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
73 0
|
4月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
38 0
|
11天前
|
Go 开发者
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第24天】Go语言的`net/http`包在HTTP客户端编程中扮演重要角色,但使用时需注意几个常见问题:1) 检查HTTP状态码以确保请求成功;2) 记得关闭响应体以防止资源泄漏;3) 设置超时限制,避免长时间等待;4) 根据需求处理重定向。理解这些细节能提升HTTP客户端编程的效率和质量。
18 1
|
13天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
21 0
|
28天前
|
Linux API iOS开发
.net core 优势
.NET Core 的优势:跨平台兼容(Windows, macOS, Linux)及容器支持,高性能,支持并行版本控制,丰富的新增API,以及开源。
25 4
|
1月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(持续更新)
在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
32 0

相关实验场景

更多