如何自动将ASP.NET动作结果包装在JSON(和异步)中?

时间:2015-05-08 15:14:22

标签: c# asp.net json asp.net-mvc async-await

我们使用以下代码自动将不从<{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自动装配器,但有一个可以处理异步操作?

0 个答案:

没有答案