asp.net-mvc - ASP.Net Core MVC 路由问题
问题描述
我正在开发一个项目(使用 .Net Core 开发),我设置了一些路由,其中一个无法正常工作,例如
1) routes.MapRoute("HRDetail", "H-R/{TName}/{MId}", new { controller = "ABC", action = "XYZ1" });
2) routes.MapRoute("CL", "{SName}/{CName}/{CId}", new { controller = "ABC", action = "XYZ2" });
我在 Startup 类中按照相同的顺序编写了代码,我的操作方法如下。
public async Task<IActionResult> XYZ2(string SName, string CName, Int16 CId)
{//for route#2}
public async Task<IActionResult> XYZ1( string TName, Int64 MId)
{//for route#1}
现在我想XYZ1
通过使用 route#1 和链接(点击XYZ1
正在动态创建)是这样的http://localhost:4321/H-R/UK/1234
。但问题是当我点击这个链接时,它总是带我去XYZ2
方法。
我没有在控制器或操作方法级别上设置任何路由。
lz有什么解决办法吗?
解决方案
看来,路线变得混乱。有两种方法可以解决此问题。1)在您的第一条路线中指定正则表达式,它将说第一个参数将是一个固定字符串作为 HR 2)在您的第二条路线中指定正则表达式,它将说第一个参数永远不会是 HR
第一
routes.MapRoute("HRDetail", "{ActionName}/{TName}/{MId}", new { controller = "ABC", action = "XYZ1" }, new{ActionName = "$your regularexpression to include only H-R$"});
或者
routes.MapRoute("CL", "{SName}/{CName}/{CId}", new { controller = "ABC", action = "XYZ2" }, new {SName = "$your regularexpression to exclude H-R$" });
PS:你需要为正则表达式付出一些努力
推荐阅读
- pip - pkg_resources.DistributionNotFound:未找到“Sphinx==1.8.5”分布,应用程序需要该分布
- asp.net-core - Entity FrameWorkCore 一对多外键关系
- css - CSS 中的这段代码将背景图像堆叠在一起。为什么?
- tkinter - tkinter 画布矩形使用项目配置调整大小
- istio - Istio Kiali 中的未知服务是什么?
- python-3.x - 尝试从 Netflix 下载图像时出现请求错误
- netlogo - 需要帮助将 netlogo 代码从版本 3 转换为 6
- angular - RXJS 运算符上的 Typescript 2345
- node.js - 如何在 Google App Engine 上的克隆存储库中部署我的应用程序?
- vue.js - 从外部 Vue 应用程序触发存储操作