Asp.net mvc 如何从ControllerContext获取结果类型

Asp.net mvc 如何从ControllerContext获取结果类型,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,是否可以从ControllerContext的实例中获取操作结果类型(ViewResult,JsonResult等) 不,那是不可能的。控制器的运行时间比任何ActionResults都要早。但是,如果您正在编写ActionFilter,则可以使用其结果属性从filterContext获取该信息 例如: public class MyGlobalActionFilter : ActionFilterAttribute { public override void OnActionExec

是否可以从
ControllerContext
的实例中获取操作结果类型(
ViewResult
JsonResult
等)

不,那是不可能的。控制器的运行时间比任何ActionResults都要早。但是,如果您正在编写ActionFilter,则可以使用其结果属性从
filterContext
获取该信息

例如:

public class MyGlobalActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var result = filterContext.Result;
        if (result is ViewResultBase)
        {
            // the controller action returned a view result 
            // (either a ViewResult or PartialViewResult)
        }
        else if (result is JsonResult)
        {
            // the controller action returned a JSON result
        }
        else if (result is RedirectToRouteResult)
        {
            // the controller action redirected
        }
        .... and so on
    }
}

请记住,只有在控制器操作完成执行后,这才有意义,也就是说,只有在
OnActionExecuted
OnResultExecuting
OnResultExecuted
中才有意义。在该操作完成执行之前,尝试验证控制器操作返回的结果没有任何意义。

代码在哪里运行?ActionFilter?这是在FilterConfig中运行的,我正在连接全局筛选器。谢谢Darin。我不这么认为,但我想确定一下。我不想验证结果。只是尝试验证结果类型。