[英]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.