ASP. Net Core MVC Проблема маршрутизации - PullRequest
0 голосов
/ 02 марта 2020

Я работаю над проектом (разработан с использованием. 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/H-R/UK/1234. Но проблема в том, что когда я нажимаю на эту ссылку, это всегда приводит меня к методу XYZ2. Я не установил какой-либо маршрут на уровне контроллера или метода действия. Есть ли решение плз?

1 Ответ

1 голос
/ 02 марта 2020

Кажется, маршрут путается. Это можно исправить двумя способами. 1) в вашем первом маршруте укажите регулярное выражение, которое скажет, что первый параметр будет фиксированной строкой как HR 2) во втором маршруте укажите регулярное выражение, которое скажет, что первый параметр никогда не будет HR

1st

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: вам нужно приложить некоторые усилия для регулярного выражения

...