gpt4 book ai didi

c# - Asp.net Web API - 从 actionfilter 返回数据

转载 作者:可可西里 更新时间:2023-11-01 03:13:47 27 4
gpt4 key购买 nike

我想从 wep api actionfilter 返回一个 json 对象。我怎样才能做到这一点?

我可以从 action 返回对象,但在某些情况下我需要从 actionfilter 返回一些数据。

提前致谢。


编辑:1当我像下面这样更改代码时,浏览器仍然加载而没有任何响应并以超时错误结束。

  public class ValidationActionFilter : ActionFilterAttribute
{

public override void OnActionExecuting(HttpActionContext actionContext)
{


var modelState = actionContext.ModelState;
if (!modelState.IsValid)
{
List<string> arr = new List<string>();
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
);
}
}

假设 Controller Action 如下:

[MyActionFilter]
public string Get()
{
return "OK";
}

此自定义 Action 过滤器将短路 Action 的执行并直接返回我们提供的响应。

关于c# - Asp.net Web API - 从 actionfilter 返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17317541/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com