在本章中,无涯教程将学习另一种路由方法,即基于属性的路由,通过基于属性的路由,可以在控制器类和这些类内部的方法上使用C#属性,这些属性具有告诉ASP.NET Core何时调用特定控制器的元数据。
它是基于约定的路由的替代方法。
按照出现的顺序,注册的顺序对路由进行判断,但是映射多个路由是很常见的,特别是如果您想通过不同的参数跳转不同的路由。
举一个简单的示例,打开 FirstAppDemo 项目,然后在浏览器中运行该应用程序,当您指定/about 时,将产生以下输出-
想要的是指定/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操作。
指定/about/country 。
如果您希望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内一样,它是控制器和操作之间的层次关系,让无涯教程再次保存该控制器,您很可能会看到相同的输出。
指定/about/country。
参考链接
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