Стандартный шаблон MVC 5.
Так что я пытаюсь понять и создать именованный маршрут будет использоваться как:Почему мой именованный маршрут не работает?
<a href="@Url.RouteUrl(routeName: "myroute", routeValues: new { code = "123" })">this link</a>
В главном контроллере:
[Route("Home/DoIt", Name = "myroute"), HttpGet]
public ActionResult DoIt(string code)
{
return View();
}
MvcAttributeRouting, конечно, включен в RoutConfig.cs:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapMvcAttributeRoutes();
}
Потому что, если он не был включен, один получит:
Маршрут с именем 'myroute' не найден в коллекции маршрутов. Имя параметра: имя
Но я получаю:
Ресурс не может быть найден. Описание: HTTP 404. Ресурс, который вы искали (или одна из его зависимостей), мог быть удален, изменил свое имя или временно недоступен. Прочитайте следующий URL-адрес и убедитесь, что оно написано правильно.
Запрошенный URL:/Главная/DoIt
Что я делаю неправильно?
EDIT: Очевидно, что я делаю что-то неправильно с атрибутом маршрута, потому что даже это не работает:
[Route("DoIt")]
или
[Route("Home/DoIt")]
Оба дают мне 404, независимо от того, запрос URL быть http://localhost/Home/DoIt или http://localhost/DoIt
Да, это разрешено. Вопрос обновлен. –
Да, именно так. Большое спасибо. –