如何使用ActionFilters中断/拦截MVC操作?

时间:2010-07-01 19:22:05

标签: asp.net asp.net-mvc

如果它重复,请随意关闭。我找不到答案。

我希望能够在Action方法上放置System.Web.ActionFilterAttribute并覆盖OnActionExecuting方法以插入业务逻辑,以确定是否应该执行Action。

ActionExecutingContext是否可以用来取消正在执行的Action Method并执行以下操作之一:

  • 发送HTTP状态代码(以及相应的<customError>页面)。
  • 在同一个Controller中执行不同的Action方法。

2 个答案:

答案 0 :(得分:2)

  

发送HTTP状态代码(和   相应的<customError>页面)

几乎:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    filterContext.HttpContext.Response.StatusCode = 500;
}

  

执行不同的操作方法   在同一个控制器内。

是:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    filterContext.Result = new ViewResult() { ViewName = "SomeOtherAction" };
}

答案 1 :(得分:1)

您始终可以重定向到操作过滤器中的其他控制器/操作。

有关示例,请参阅here