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() 方法

目录
相关文章
|
5月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
499 6
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:<https://github.com/khellang/Scrutor>
421 5
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
369 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
353 1
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
416 3
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
568 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
326 7
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
409 0
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
334 0