2015-05-04 6 views
6

Что такое эквивалент ASP.NET MVC 5HandleUnknownAction в ASP.NET 5

Controller.HandleUnknownAction() 

в ASP.NET MVC 6/ASP.NET 5?

+1

Любопытно, какой сценарий вы обычно используете этот метод для? Я вижу, что вы можете отправить ответ, вероятно, говоря, что действие не найдено или что-то в этом роде ... но есть ли что-то еще, что вы используете для ... –

+0

Динамически сгенерированные шаблоны. Скажем, у меня есть/Templates/EmployeeDetails , что я буду делать, сначала проверьте, есть ли файл Views/Templates/EmployeeDetails.cshtml. Если нет, я буду использовать GenericDetails.cshtml, который внутри будет использовать отражение, чтобы создать правильный html для редактирования Employee. Скорее избегайте необходимости создавать метод действия + выделенный .cshtml для каждого типа, который у меня есть, поскольку 90% из них будут представлять собой только 1-к-1 карту свойств для входов html. – Mikeon

ответ

6

Реального эквивалента нет.

Выбор действий в MVC5/WebAPI2 был процесс три этапа: 1. Выполнить маршруты 2. Выберите контроллер 3. Выберите действие

В MVC6, шаг 2 ушел. Действия выбираются напрямую с использованием значений маршрута - вы заметите, что Controller.BeginExecute ушел. Теперь контроллеры «тонкие».

Вы можете имитировать это поведение, если хотите, используя маршрут, который идет непосредственно к вашему действию.

Определим действие под названием HandleUnknownAction в контроллере routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute("unknown_action", "{controller}/{*params}", defaults: new { action = "HandleUnknownAction"});

0

Альтернативный подход заключается просто определить неизвестное действие в качестве параметра маршруту:

Используя этот подход, URL-адрес foo/bar будет вернуть вид bar.cshtml, foo/baz вернется baz.cshtml и т. д.