我们使用以下代码自动将不从<{1}}派生的操作结果包装到JSON中。
ActionResult
这意味着我们可以非常轻松地使用合成将json返回到我们的网络应用程序:
// auto json wrapper
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var return_type = ((ReflectedActionDescriptor)filterContext.ActionDescriptor).MethodInfo.ReturnType;
// check if the return type is an ActionResult
if (!typeof(ActionResult).IsAssignableFrom(return_type))
{
// capture the result from the action
var result = filterContext.ActionDescriptor.Execute(filterContext, filterContext.ActionParameters);
// set the result, this means that the rest of the normal path will not be executed
filterContext.Result = Json(result);
// manually call OnActionExecuted
this.OnActionExecuted(new ActionExecutedContext(ControllerContext, filterContext.ActionDescriptor, false, null));
}
}
问题是我们想要更多地转向异步mvc模式,当然这不会起作用,因为我们在OnActionExecuting方法中的自动装配器是一种同步方法。
有没有办法像上面那样拥有一个json自动装配器,但有一个可以处理异步操作?