/// <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); }
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()); } } } }