MapMvcAttributeRoutes()
метод расширения доступен только в MVC версии 5 или выше, поскольку класс RouteCollectionAttributeRoutingExtensions
не существовал в предыдущих версиях. Использование этого метода в MVC 4 или ниже покажет эту ошибку:
'RouteCollection' не содержит определения для
'MapMvcAttributeRoutes' и без метода расширения
MapMvcAttributeRoutes принимает первый аргумент типа
'RouteCollection' может быть найден.
Если вы хотите использовать атрибутную маршрутизацию в версиях MVC старше MVC 5, установите пакет AttributeRouting
, затем используйте метод AddRoutesFromController()
для добавления имени контроллера в конфигурацию маршрутизации внутри метода RegisterRoutes
(ControllerName
принадлежит любому имени класса контроллера):
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapAttributeRoutes(config =>
{
config.AddRoutesFromController<ControllerName>();
});
}
Затем вы можете использовать RouteAttribute
(и RoutePrefixAttribute
) аналогично моде MVC 5:
[RoutePrefix("Cars")]
public class CarsController : Controller
{
[Route("Cars/Index")]
public ActionResult Index()
{
// do something
}
}
Подробную информацию об использовании пакета AttributeRouting
можно найти здесь .