Ошибка в работе Url.Action
Генерирую ссылку:
@Url.Action("Index", "Home")
Получаю на выходе /
.
А вот если впишу несуществующие контроллеры и методы, то делает нормальную ссылку.
В чем проблема?
Источник: Stack Overflow на русском
Генерирую ссылку:
@Url.Action("Index", "Home")
Получаю на выходе /
.
А вот если впишу несуществующие контроллеры и методы, то делает нормальную ссылку.
В чем проблема?
Url.Action()
не проверяет контроллер и экшн на существование. Он ограничивается поиском подходящего роута и сокращением полученной ссылки на основании строк из defaults - у вас это controller="Home"
, action="Index"
.
Даже если вы удалите HomeController
или HomeController.Index
, @Url.Action("Index", "Home")
будет все так же выдавать /
.
Потому что Home/Index прописан в RouteConfig как "по умолчанию"
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
и этот путь отображается как корневой.