我试图按照中的建议将错误返回给对 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/