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.