Обработка несуществующих действий контроллера ASP.NET MVC

При получении HTTP-запроса к несуществующему действию контроллера ASP.NET MVC, можно по-разному обрабатывать эту ситуацию. Одним из вариантов является переопределение метода HandleUnknownAction.

Допустим в нашем приложении есть контроллер:

public class HomeController : Controller
{
  public ActionResult Index()
  {
    return View();
  }
}

При стандартной настройке маршрутов мы можем обратиться к контроллеру по адресу /home/index и страница отобразится пользователю.

В случае, если мы обратимся по адресу, соответствующему несуществующему контроллеру, мы получим HTTP 404.

Чтобы исправить эту ситуацию, переопределим метод HandleUnknownAction для данного контроллера:

public class HomeController : Controller
{
  public ActionResult Index()
  {
    return View();
  }

  protected override void HandleUnknownAction(string actionName)
  {
    View("Index").ExecuteResult(ControllerContext);
  }
}

При такой реализации, обращаясь к несуществующему действию, мы получим страницу Index. Каким образом построить дальнейшую логику будет зависеть от конкретного приложения.