Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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 mvc 在ActionFilterAttribute中说明这是否是重定向_Asp.net Mvc_Asp.net Mvc 4_Actionfilterattribute - Fatal编程技术网

Asp.net mvc 在ActionFilterAttribute中说明这是否是重定向

Asp.net mvc 在ActionFilterAttribute中说明这是否是重定向,asp.net-mvc,asp.net-mvc-4,actionfilterattribute,Asp.net Mvc,Asp.net Mvc 4,Actionfilterattribute,我试图创建一个ActionFilterAttribute,每个请求只运行一次,所以我正在做类似的事情 public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.IsChildAction) return; // More stuff here } 我可能需要检查filterContext.HttpContext.Request

我试图创建一个ActionFilterAttribute,每个请求只运行一次,所以我正在做类似的事情

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    if (filterContext.IsChildAction)
        return;

    // More stuff here
}
我可能需要检查
filterContext.HttpContext.Request.IsAjaxRequest()
在某些情况下是否为false,但我真正的问题是如何判断它不是重定向。当操作
X
重定向到操作
Y
时,过滤器运行两次,一次用于
X
,一次用于
Y
(对于
Y
IsChildAction
为false)

我试图在
filterContext.HttpContext.Items
上保存一些键,这将告诉我筛选器已运行,但这些项在
X
Y
之间不共享


你知道我如何从
ActionExecutingContext
中判断这是一个重定向吗?

我相信这就是你想要的:

您可以检查它是重定向结果还是重定向到路由结果

var redirectResult = filterContext.Result as RedirectResult;
    if (filterContext.Result is RedirectResult)
    {
        // It was a RedirectResult => do something
    }
    else if (filterContext.Result is RedirectToRouteResult)
    {
        // It was a RedirectToRouteResult => do something

    }

我的过滤器的目的是在满足某些条件时阻止操作。我需要OnActionExecuting而不是OnActionExecuted的解决方案。