如何从ControllerContext获取Result类型

时间:2013-02-06 15:59:50

标签: asp.net-mvc asp.net-mvc-4

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

1 个答案:

答案 0 :(得分:7)

不,那是不可能的。控制器比任何ActionResults运行得早得多。但是如果您正在编写ActionFilter,则可以使用其Result属性从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
    }
}

请记住,仅在控制器操作执行完毕后才有意义,仅在OnActionExecutedOnResultExecutingOnResultExecuted内部执行此操作。在此操作完成执行之前,尝试验证控制器操作返回的结果是没有意义的。