Ошибка в работе Url.Action

Рейтинг: 2Ответов: 2Опубликовано: 17.04.2015

Генерирую ссылку:

@Url.Action("Index", "Home")

Получаю на выходе /.
А вот если впишу несуществующие контроллеры и методы, то делает нормальную ссылку.
В чем проблема?

Ответы

▲ 1Принят

Url.Action() не проверяет контроллер и экшн на существование. Он ограничивается поиском подходящего роута и сокращением полученной ссылки на основании строк из defaults - у вас это controller="Home", action="Index".

Даже если вы удалите HomeController или HomeController.Index, @Url.Action("Index", "Home") будет все так же выдавать /.

▲ 1

Потому что Home/Index прописан в RouteConfig как "по умолчанию"

            routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

и этот путь отображается как корневой.