ASP.NET Core - 属性路由

ASP.NET Core - 属性路由 首页 / ASP.Net Core入门教程 / ASP.NET Core - 属性路由

在本章中,无涯教程将学习另一种路由方法,即基于属性的路由,通过基于属性的路由,可以在控制器类和这些类内部的方法上使用C#属性,这些属性具有告诉ASP.NET Core何时调用特定控制器的元数据。

  • 它是基于约定的路由的替代方法。

  • 按照出现的顺序,注册的顺序对路由进行判断,但是映射多个路由是很常见的,特别是如果您想通过不同的参数跳转不同的路由。

举一个简单的示例,打开 FirstAppDemo 项目,然后在浏览器中运行该应用程序,当您指定/about 时,将产生以下输出-

Simple Example

想要的是指定/about 时,应用程序应调用AboutController的Phone操作,在这里,可以使用Route属性为此控制器强制执行一些显式路由。此属性位于名称空间 Microsoft.AspNet.Mvc 中。

无涯教程网

以下是 AboutController 的实现,其中添加了属性路由。

using Microsoft.AspNet.Mvc;  

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks;  

namespace FirstAppDemo.Controllers { 
   [Route("about")] 
   public class AboutController { 
      [Route ("")] 
      public string Phone() { 
         return "+49-333-3333333"; 
      }  
      [Route("country")] 
      public string Country() { 
         return "Germany"; 
      } 
   } 
}

在这里,无涯教程希望该路由对于Phone操作,指定了一个空字符串,这意味着不需要指定操作即可获取此方法,用户只需要来到/about。对于"Country"操作,在路径属性中指定了"Country"。存AboutController,刷新您的浏览器,然后转到/about,然后应执行Phone操作。

链接:https://www.learnfk.comhttps://www.learnfk.com/asp.net_core/asp.net-core-attribute-routes.html

来源:LearnFk无涯教程网

Mobile Number

指定/about/country 。

Same Country Result

如果您希望URL的一部分包含控制器的名称,您可以做的是代替显式使用控制器名称,而可以在方括号内使用控制器,这告诉ASP.NET MVC在此位置使用此控制器的名称,如以下程序所示。

using Microsoft.AspNet.Mvc; 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading.Tasks;  

namespace FirstAppDemo.Controllers { 
   [Route("[controller]")] 
   public class AboutController { 
      [Route ("")] 
      public string Phone() { 
         return "+49-333-3333333"; 
      }  
      [Route("[action]")] 
      public string Country() { 
         return "Germany"; 
      } 
   } 
} 

这样,如果您重命名了控制器,则无需记住更改路径,并且在控制器和该动作之间隐含一个斜杠(/),就像在URL内一样,它是控制器和操作之间的层次关系,让无涯教程再次保存该控制器,您很可能会看到相同的输出。

Rename the Controller

指定/about/country。

Rename the Controller

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

软件测试52讲 -〔茹炳晟〕

Linux性能优化实战 -〔倪朋飞〕

摄影入门课 -〔小麥〕

乔新亮的CTO成长复盘 -〔乔新亮〕

技术面试官识人手册 -〔熊燚(四火)〕

Serverless进阶实战课 -〔静远〕

超级访谈:对话玉伯 -〔玉伯〕

现代C++20实战高手课 -〔卢誉声〕

Python实战 · 从0到1搭建直播视频平台 -〔Barry〕

好记忆不如烂笔头。留下您的足迹吧 :)