У меня просто была очень похожая проблема.Мое решение состояло в том, чтобы дать системе маршрутизации причину отклонить маршрут страницы при поиске совпадений для ActionLink.
В частности, в сгенерированном URL вы можете видеть, что ActionLink создает два параметра: контроллер и действие.Мы можем использовать их в качестве метода, чтобы наши «стандартные» маршруты (~ / controller / action / id) не соответствовали маршруту страницы.
Заменив статические «отчеты» в маршруте страницы параметром, который мыМы назовем «контроллер», а затем добавим ограничение, что «контроллер» должен быть «сообщает», мы получаем тот же маршрут страницы для наших отчетов, но отклоняем что-либо с параметром контроллера, который не «сообщает».
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// register the report routes
// the second RouteValueDictionary sets the constraint that {controller} = "reports"
routes.MapPageRoute("ReportTest",
"{controller}/test",
"~/WebForms/test.aspx",
false,
new RouteValueDictionary(),
new RouteValueDictionary { { "controller", "reports"} });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}