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。我不这么认为,但我想确定一下。我不想验证结果。只是尝试验证结果类型。