首页 > 编程语言 >无涯教程-ASP.NET Core - 属性路由

无涯教程-ASP.NET Core - 属性路由

时间:2023-10-11 14:32:25浏览次数:31  
标签:Core 控制器 ASP Route 无涯 System about using 路由

在本章中,无涯教程将学习另一种路由方法,即基于属性的路由,通过基于属性的路由,可以在控制器类和这些类内部的方法上使用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操作。

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

参考链接

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

标签:Core,控制器,ASP,Route,无涯,System,about,using,路由
From: https://blog.51cto.com/u_14033984/7810447

相关文章

  • 无涯教程-ASP.NET Core - MVC设置
    在本章中,无涯教程将在FirstAppDemo应用程序设置为MVC框架,将在ASP.NETCore(更具体地说,ASP.NETCoreMVC框架)构建一个Web应用程序,从技术上讲,只能使用中间件来构建整个应用程序,但是ASP.NETCoreMVC提供了可轻松创建HTML页面和基于HTTP的API的功能。要在空项目中设置MVC框架,请遵......
  • 无涯教程-ASP.NET Core - 中间件
    在本章中,无涯教程将了解如何设置中间件(Middleware),ASP.NETCore中间件控制应用程序如何响应HTTP请求。现在假设想将有关每个请求的信息记录到应用程序中。在这种情况下,可能会安装到应用程序中的第一个中间件是日志记录(Logger)组件。该记录器(Logger)可以看到有关传入请求的......
  • tp5 php 阿里OS RequestCoreException: cURL error: SSL certificate problem: certif
    出现这种情况,肯定是域名SSL证书过期。现在出现问题:提交表单出现这种情况,网址不是https的,之前一直也没有问题,一开始想不通网址都不是HTTPS为什么还会有SSL证书的问题,检查了下发现上传中图片是上传到阿里OSS的(https://img.oss.xxx.com),里边就用到了HTTPS域名,原来是这样里,一查发现过......
  • Asp.net core中HttpResponse常用属性及Status code
    在ASP.NETCore中,HttpResponse表示HTTP响应,其中包括一些常用的属性和方法,用于设置HTTP响应的各种属性。HTTP响应通常由一个HTTP状态码,HTTP头(headers),和HTTP主体(body)组成。以下是一些常用的HttpResponse属性和一些常见的HTTP状态码及其含义:HttpResponse常用属性:StatusCode:用......
  • 《这是新的EF CORE》
    博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是...博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开......
  • 无涯教程-Derby - Alert语句
    ALTERTABLE语句允许您更改现有表,使用此您可以执行以下操作-添加列,添加约束删除列,删除约束更改表的行级别锁定让无涯教程假设已经创建了一个名为Employees的表,如下所示:ij>CREATETABLEEmployees(IdINTNOTNULLGENERATEDALWAYSASIDENTITY,NameVARCHAR(255......
  • 报错Intel MKL FATAL ERROR: Cannot load libmkl_core.so.的一种解决方法
    问题今天上80服务器跑mdistiller的代码时,意外发现torch、numpy都不能用了T_T以torch为例,出现如下报错情况以numpy为例,出现如下报错情况我们先看看报错信息,这个报错来自InterMKL。InterMKL全称是TheIntelMathKernelLibrary,它是一个主要是用于科学计算的共享库,提供了很......
  • 无涯教程-Derby - Having语句
    HAVING子句使您可以指定条件,以过滤出哪些组输出出现在输出中。WHERE子句将条件放置在所选列上,而HAVING子句将条件放置在GROUPBY子句创建的组上。Having-语法以下是HAVING子句的语法-ij>SELECTcolumn1,column2...fromtable_nameGROUPBYcolumnhavingcondition;......
  • 无涯教程-Derby - Order By语句
    ORDERBY子句用于按其使用关键字的顺序排列输出集的内容,ASC代表升序,DESC代表降序,如果您不提及其中任何一个,则默认情况下内容将按升序排列。OrderBy-语法以下是ORDERBY子句的语法-SELECT*FROMtable_nameORDERBYcolumn_nameASC|DESC.OrderBy-命令行示例假设无涯......
  • 无涯教程-Derby - Group By语句
    GROUPBY子句与SELECT语句一起使用,如果数据相同,则用于形成子集,通常,此子句后跟ORDERBY子句,并放在WHERE子句之后。GROUPBY-语法以下是GROUPBY子句的语法-ij>SELECTcolumn1,column2,...table_nameGROUPBYcolumn1,column2,...;GROUPBY-命令行示例假设无涯......