是否可以从ViewResult
的实例获取操作结果类型(JsonResult
,ControllerContext
等)?
答案 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
}
}
请记住,仅在控制器操作执行完毕后才有意义,仅在OnActionExecuted
,OnResultExecuting
和OnResultExecuted
内部执行此操作。在此操作完成执行之前,尝试验证控制器操作返回的结果是没有意义的。