HandleUnknownAction в ASP.NET 5
что такое эквивалент ASP.NET MVC 5
Controller.HandleUnknownAction()
in ASP.NET MVC 6 / ASP.NET 5?
2 ответов
нет реального эквивалента.
Выбор действия в 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"});
альтернативный подход-просто определить неизвестное действие как параметр вашего маршрута:
[Route("[controller]")]
public class FooController : Controller
{
[HttpGet("{viewName}")]
public IActionResult HandleUnknownAction(string viewName)
{
return View(viewName);
}
}
используя этот подход, url foo/bar
вернет представление bar.cshtml
, foo/baz
вернутся baz.cshtml
etc.