Как насчет добавления нового маршрута до вашего текущего маршрута, который будет таким.
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index",
id = UrlParameter.Optional }
);
новый маршрут будет выглядеть следующим образом -
routes.MapRoute(
name: "**Withoutparam**",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
Пожалуйста, обратите внимание, что вам нужно добавить этот маршрут до вашего текущего маршрута в RouteConfig.cs. Это связано с тем, что MVC начинает поиск маршрутов в файле RouteConfig сверху вниз. Как только он найдет подходящий маршрут, он перестанет искать дальше. Поэтому для вашей проблемы, когда будет маршрут без параметров, он будет выбирать маршрут «Безпарма».
Как я понимаю из вашего комментария ниже. Вам нужен url без id в каждом условии. Если это так, то я думаю, что вы можете сделать это: -
var url = new StringBuilder();
string[] partOfUrl = HttpContext.Request.Url.AbsolutePath.ToLower().split('/');
for(int count = 0; count< (partOfUrl.Length - 1); count++)
{
url.Append(partOfLength[count] + "/")
}
использование url.ToString() в качестве URL, который вы хотите.
Если вы не активно используют '{контроллер}/{действие}/{ID}' маршрут (т.е. вы передаете 'id' только через строку запроса) вы можете сохранить только маршрут '{controller}/{action}. – Albireo
он также использует id. – Mukund
Да, но если он передаёт это * только * в качестве параметра (он сказал *, который на самом деле «*), ему не нужен маршрут' {controller}/{action}/{id} '. – Albireo