ASP.NET 5 中的 HandleUnknownAction

HandleUnknownAction in ASP.NET 5

什么是 ASP.NET MVC 5

的等价物
Controller.HandleUnknownAction() 

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

没有真正的等价物。

Action Selection in MVC5/WebAPI2 是一个三阶段过程: 1. 运行 路线 2. Select 一个控制器 3. Select 一个动作

在 MVC6 中,步骤 2 消失了。使用路由值直接选择操作 - 您会注意到 Controller.BeginExecute 也不见了。控制器现在 'thin'。

如果需要,您可以通过使用直接进入相关操作的路线来模拟此行为。

在您的控制器中定义一个名为 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 将 return 视图 bar.cshtmlfoo/baz 将 return baz.cshtml等等