Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何使用ActionFilters中断/拦截MVC操作?_Asp.net_Asp.net Mvc - Fatal编程技术网

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

Asp.net 如何使用ActionFilters中断/拦截MVC操作?,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,如果这是重复的,请随意关闭。我找不到答案 我希望能够在操作方法上放置System.Web.ActionFilterAttribute,并重写OnActionExecuting方法以插入确定是否应执行操作的业务逻辑 是否可以使用ActionExecutingContext取消正在执行的操作方法并执行以下操作之一: 发送HTTP状态代码(以及相应的页面) 在同一控制器内执行不同的操作方法 发送HTTP状态代码(以及 相应的页面) 几乎: public override void OnAction

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

我希望能够在操作方法上放置
System.Web.ActionFilterAttribute
,并重写
OnActionExecuting
方法以插入确定是否应执行操作的业务逻辑

是否可以使用
ActionExecutingContext
取消正在执行的操作方法并执行以下操作之一:

  • 发送HTTP状态代码(以及相应的页面)
  • 在同一控制器内执行不同的操作方法
发送HTTP状态代码(以及 相应的
页面)

几乎:

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

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

是的:


您始终可以重定向到动作筛选器中的另一个控制器/动作


请参见示例。

我认为你的回答的后半部分不正确。这将只返回一个不同的视图,而不是执行操作。如何
filterContext.Result=new redirectoroutesult(…)
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    filterContext.Result = new ViewResult() { ViewName = "SomeOtherAction" };
}