Asp.net Web API – 从actionfilter返回数据
我想从wep api actionfilter返回一个json对象。 我怎样才能做到这一点?
我可以从操作返回对象,但我需要在某些条件下从actionfilter返回一些数据。
提前致谢。
编辑:1当我更改如下代码时,浏览器仍然加载没有任何响应,并以超时错误结束。
public class ValidationActionFilter : ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext) { var modelState = actionContext.ModelState; if (!modelState.IsValid) { List arr = new List(); foreach (var key in modelState.Keys) { var state = modelState[key]; if (state.Errors.Any()) { string er = state.Errors.First().ErrorMessage; if (!string.IsNullOrEmpty(er)) { arr.Add(er); } } } var output = new Result() { Status = Status.Error.ToString(), Data = null, Message = arr }; actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, output, actionContext.ControllerContext.Configuration.Formatters.JsonFormatter); } } }
您只需要分配响应:
public class MyActionFilterAttribute: ActionFilterAttribute { public override void OnActionExecuting(HttpActionContext actionContext) { actionContext.Response = actionContext.Request.CreateResponse( HttpStatusCode.OK, new { foo = "bar" }, actionContext.ControllerContext.Configuration.Formatters.JsonFormatter ); } }
假设以下控制器操作:
[MyActionFilter] public string Get() { return "OK"; }
此自定义操作筛选器将使操作的执行短路并直接返回我们提供的响应。