/// <summary>
        /// MVC模型验证检查
        /// </summary>
        /// <param name="actionContext"></param>
        public void HandleExecutingContext(HttpActionContext ctx)
        {
            IApiResult result;

            if (!ctx.ModelState.IsValid && this.HandleModelStateValidationError(ctx.ModelState, out result))
            {
                ctx.Response = ctx.Request.CreateResponse(HttpStatusCode.OK, result);
                return;
            }
            AssociateFilter.OnActionExecuting(ctx);
        }
        public void HandleExecutedContext(HttpActionExecutedContext ctx)
        {
            IApiResult result = new ApiResult();

            //如果有模型校验错误就返回
            if (!ctx.ActionContext.ModelState.IsValid && this.HandleModelStateValidationError(ctx.ActionContext.ModelState, out result))
            {
                ctx.Response = ctx.Request.CreateResponse(HttpStatusCode.OK, result);
                return;
            }

            AssociateFilter.OnActionExecuted(ctx);
            if (ctx.Exception != null && this.HandleException(ctx.Exception, out result))
            {
                ctx.Response = ctx.Request.CreateResponse(HttpStatusCode.OK, result);
            }
            else
            {
                if (ctx.Response.StatusCode == HttpStatusCode.Unauthorized && this.HandleUnauthorizedRequest(ctx.ActionContext, out result))
                {
                    return;
                }
                else if (ctx.Response.StatusCode != HttpStatusCode.OK && ctx.Response.StatusCode != HttpStatusCode.NoContent)
                {
                    result = new ApiResult((int)ctx.Response.StatusCode, ctx.Response.StatusCode.ToString());
                }
                else
                {
                    var cnt = ctx.ActionContext.Response.Content;
                    if (cnt != null)
                    {
                        var objCnt = (ObjectContent)cnt;
                        if (typeof(IPagedList).IsAssignableFrom(objCnt.ObjectType))
                        {
                            result = PagedApiResult.FromPagedList((IPagedList)objCnt.Value);
                        }
                        else
                        {
                            ((ApiResult)result).data = ctx.ActionContext.Response.Content.ReadAsAsync <object>().Result;
                        }
                    }
                }
            }
            ctx.Response = ctx.Request.CreateResponse(HttpStatusCode.OK, result);
        }
示例#3
0
        public void HandleExecutedContext(HttpActionExecutedContext ctx)
        {
            ApiResult resp;

            //如果有模型校验错误就返回
            if (!ctx.ActionContext.ModelState.IsValid && this.HandleModelStateValidationError(ctx.ActionContext.ModelState, out resp))
            {
                ctx.Response = ctx.Request.CreateResponse(HttpStatusCode.OK, (ApiResult)(IApiResult)resp);
                return;
            }

            AssociateFilter.InvokeBaseOnActionExecuted(ctx);
            if (ctx.Exception != null && this.HandleException(ctx.Exception, out resp))
            {
                ctx.Response = ctx.Request.CreateResponse(HttpStatusCode.OK, (ApiResult)(IApiResult)resp);
            }
            else
            {
                if (ctx.Response.StatusCode == HttpStatusCode.Unauthorized && this.HandleUnauthorizedRequest(ctx.ActionContext, out resp))
                {
                    return;
                }
                else if (ctx.Response.StatusCode != HttpStatusCode.OK && ctx.Response.StatusCode != HttpStatusCode.NoContent)
                {
                    var result = new ApiResult((int)ctx.Response.StatusCode, ctx.Response.StatusCode.ToString());
                    ctx.Response = ctx.Request.CreateResponse(HttpStatusCode.OK, result);
                }
                else
                {
                    var cnt = ctx.ActionContext.Response.Content;
                    if (cnt != null)
                    {
                        var objCnt = (ObjectContent)cnt;
                        if (typeof(IPagedList).IsAssignableFrom(objCnt.ObjectType))
                        {
                            var x      = ((IPagedList)objCnt.Value).AsApiResponse();
                            var result = new ApiResultWithPagedDataList <object>();
                            result.hasMore = x.hasMore;
                            result.data    = x.data;
                            ctx.Response   = ctx.Request.CreateResponse(HttpStatusCode.OK, result);
                        }
                        else if (objCnt.ObjectType.Equals(typeof(ApiResult)))
                        {
                            ctx.Response = ctx.Request.CreateResponse(HttpStatusCode.OK, objCnt);
                        }
                        else
                        {
                            var result = new ApiResultWithData()
                            {
                                data = ctx.ActionContext.Response.Content.ReadAsAsync <object>().Result
                            };
                            ctx.Response = ctx.Request.CreateResponse(HttpStatusCode.OK, result);
                        }
                    }
                    else
                    {
                        ctx.Response = ctx.Request.CreateResponse(HttpStatusCode.OK, new ApiResult());
                    }
                }
            }
        }