gpt4 book ai didi

c# - 返回带有错误状态码 MVC 的 JSON

转载 作者:IT老高 更新时间:2023-10-28 12:47:11 26 4
gpt4 key购买 nike

我试图按照中的建议将错误返回给对 Controller 的调用 This link以便客户可以采取适当的行动。 Controller 由 javascript 通过 jquery AJAX 调用。只有当我没有将状态设置为错误时,我才会返回 Json 对象。这是示例代码

if (response.errors.Length > 0)
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Json(response);

如果我不设置状态码,我会得到 Json。如果我设置状态码,我会返回状态码,但不会返回 Json 错误对象。

更新我想将一个错误对象作为 JSON 发送,以便可以处理 ajax 的错误回调。

最佳答案

我发现的最简洁的解决方案是创建您自己的 JsonResult,它扩展了原始实现并允许您指定 HttpStatusCode:

public class JsonHttpStatusResult : JsonResult
{
private readonly HttpStatusCode _httpStatus;

public JsonHttpStatusResult(object data, HttpStatusCode httpStatus)
{
Data = data;
_httpStatus = httpStatus;
}

public override void ExecuteResult(ControllerContext context)
{
context.RequestContext.HttpContext.Response.StatusCode = (int)_httpStatus;
base.ExecuteResult(context);
}
}

然后您可以像这样在 Controller 操作中使用它:

if(thereWereErrors)
{
var errorModel = new { error = "There was an error" };
return new JsonHttpStatusResult(errorModel, HttpStatusCode.InternalServerError);
}

关于c# - 返回带有错误状态码 MVC 的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11370251/

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