Установка контроллера и действия по умолчанию с использованием атрибутов маршрута в ASP.Net MVC 5

Я очень новичок в ASP.Net MVC и пытаюсь изучить ASP.Net MVC 5. Я пытаюсь изучить его, создав образец проекта с нуля без строительных лесов. Я знаю, что можно указать Контроллер по умолчанию и Действие по умолчанию в RouteConfig.cs, вызвав метод routes.MapRoute. Но мне интересно, могу ли я установить контроллер и действие по умолчанию, используя атрибут Route без использования RouteConfig.cs.

Изменить: я обнаружил, что это можно сделать, добавив следующую строку кода в метод RegisterRoutes метода RouteConfig.cs и удалив остальные строки.

routes.MapMvcAttributeRoutes();

После этого в действии контроллера, где мы хотим установить значение по умолчанию, просто добавьте атрибут [Route("~/")] над действием. Это должно сделать это.

Но в случае проверки подлинности с помощью форм у нас будет представление входа в систему. Если у нас нет традиционной маршрутизации, то перенаправление к представлению входа не удастся, потому что маршрутизация на основе атрибутов для контроллера по умолчанию, который будет домашним, не перенаправляется на вход. Если мы также добавим атрибут [Route("~/")] к действию входа, он выдаст сообщение об ошибке: «Обнаружено несколько типов контроллеров, соответствующих URL-адресу. Это может произойти, если маршруты атрибутов на нескольких контроллерах соответствуют запрошенному URL-адресу».


person Ven    schedule 03.05.2017    source источник


Ответы (1)


Традиционная маршрутизация и маршруты атрибутов могут работать вместе. Просто не удаляйте другие строки в RouteConfig.cs и помещайте routes.MapMvcAttributeRoutes(); поверх других строк. Система маршрутизации сначала попытается найти соответствие с маршрутами атрибутов для запрошенного URL-адреса, если она не может найти совпадение, затем будет искать традиционную систему маршрутизации, чтобы найти совпадение с запрошенным URL

person Ali Zeinali    schedule 03.05.2017