在调用特定操作之前重定向
页面创建日期 :
当您访问 ASP.NET MVC 构建的网站时,URL 和路由将调用相应的控制器操作,但在某些情况下,您可能希望在调用相应的操作之前重定向到其他操作或其他页面。
如果每个操作都重定向,则可以使用 RedirectResult 或 RedirectToRouteResult 解决它,但如果希望每个操作在调用之前进行通用重定向,则可以使用 Controller.OnActionExecuting 重写方法。 此方法是在调用每个操作之前处理的。
如果要重定向 Controller.OnActionExecuting 方法,请执行以下操作:
public class MyController : Controller
{
// 各アクションが呼ばれる前に呼ばれるメソッド
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (リダイレクトさせる条件)
{
filterContext.Result = new RedirectResult(url);
return;
}
}
}
将 RedirectResult 设置为"ActionExecutingContext.Result"时,它将重定向到指定的 URL。 如果未使用 if 语句分支,则会对属于目标控制器的所有操作执行重定向。
您还可以为每个控制器类的基类设置一个通用的控制器类,并实现 OnActionExecuting 方法,以便在多个控制器类之间共享处理。
由于 ActionExecutingContext.Result 的类型为 ActionResult,因此可以使用 RedirectToRouteResult 类和 Controller.RedirectToAction 方法。