3

是否可以从 的实例中获取 Action 结果类型(ViewResultJsonResult等)ControllerContext

4

1 回答 1

7

不,那是不可能的。控制器比任何 ActionResults 运行得早得多。filterContext但是,如果您正在编写一个 ActionFilter,您可以通过使用其 Result 属性来获取该信息。

例如:

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和. 在此操作完成执行之前尝试验证控制器操作返回的结果是没有意义的。OnResultExecutingOnResultExecuted

于 2013-02-06T16:05:08.170 回答