Могу ли я использовать маршруты. MapMvcAttributeRoutes (); на MVC4? - PullRequest
0 голосов
/ 03 мая 2018

пытаюсь создать контроллер на MVC4 и мне нужны ссылки на специальный атрибут поэтому, когда я открываю RouteConfig.cs Я не могу найти это: routes.MapMvcAttributeRoutes (); и дай мне ошибку. Итак, как я могу сделать специальный атрибут для каждого элемента управления и действия на MVC 4

1 Ответ

0 голосов
/ 03 мая 2018

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>();
    });
}

Затем вы можете использовать RouteAttributeRoutePrefixAttribute) аналогично моде MVC 5:

[RoutePrefix("Cars")]
public class CarsController : Controller
{
    [Route("Cars/Index")]
    public ActionResult Index()
    {
        // do something
    }
}

Подробную информацию об использовании пакета AttributeRouting можно найти здесь .

...