Что такое эквивалент ASP.NET MVC 5HandleUnknownAction в ASP.NET 5
Controller.HandleUnknownAction()
в ASP.NET MVC 6/ASP.NET 5?
Что такое эквивалент ASP.NET MVC 5HandleUnknownAction в ASP.NET 5
Controller.HandleUnknownAction()
в ASP.NET MVC 6/ASP.NET 5?
Реального эквивалента нет.
Выбор действий в 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"});
Альтернативный подход заключается просто определить неизвестное действие в качестве параметра маршруту:
Используя этот подход, URL-адрес foo/bar
будет вернуть вид bar.cshtml
, foo/baz
вернется baz.cshtml
и т. д.
Любопытно, какой сценарий вы обычно используете этот метод для? Я вижу, что вы можете отправить ответ, вероятно, говоря, что действие не найдено или что-то в этом роде ... но есть ли что-то еще, что вы используете для ... –
Динамически сгенерированные шаблоны. Скажем, у меня есть/Templates/EmployeeDetails , что я буду делать, сначала проверьте, есть ли файл Views/Templates/EmployeeDetails.cshtml. Если нет, я буду использовать GenericDetails.cshtml, который внутри будет использовать отражение, чтобы создать правильный html для редактирования Employee. Скорее избегайте необходимости создавать метод действия + выделенный .cshtml для каждого типа, который у меня есть, поскольку 90% из них будут представлять собой только 1-к-1 карту свойств для входов html. – Mikeon