簡體   English   中英

ASP.Net Core MVC 路由問題

[英]ASP.Net Core MVC Routing Issue

我正在處理一個項目(使用 .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使用路線#1和(打鏈接XYZ1被動態創建的)是這樣http://localhost:4321/HR/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:你需要為正則表達式付出一些努力

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM