HandleUnknownAction in ASP.NET 5

What is the equivalent of ASP.NET MVC 5

Controller.HandleUnknownAction() 

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

+6
source share
2 answers

There is no real equivalent.

Choosing an action in MVC5 / WebAPI2 was a three-step process: 1. Launch routes 2. Select a controller 3. Select an action

In MVC6, step 2 has disappeared. Actions are selected directly using route values ​​- you will notice that Controller.BeginExecute also gone. Now the controllers are thin.

You can model this behavior if you want using a route that goes directly to your action.

Define an action called HandleUnknownAction in your routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute("unknown_action", "{controller}/{*params}", defaults: new { action = "HandleUnknownAction"}); controller routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute("unknown_action", "{controller}/{*params}", defaults: new { action = "HandleUnknownAction"}); routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute("unknown_action", "{controller}/{*params}", defaults: new { action = "HandleUnknownAction"});

+6
source

An alternative approach is to simply define an unknown action as a parameter of your route:

 [Route("[controller]")] public class FooController : Controller { [HttpGet("{viewName}")] public IActionResult HandleUnknownAction(string viewName) { return View(viewName); } } 

Using this approach, url foo/bar will return View bar.cshtml , foo/baz will return baz.cshtml , etc.

0
source

Source: https://habr.com/ru/post/986502/


All Articles