我喜欢用一个return语句来设计我的方法,原因有很多(我认为这是最佳实践)。
但是我怎么能有一个mvc控制器actionresult创建一个结果对象,我可以将HttpStatusCodeResult和普通的Json结果放在一起?
他们都继承自ActionResult。
修改 我现在拥有的一个例子,但想改成只有1个返回语句,就像这样:
4
答案 0 :(得分:4)
您可以继承并扩展添加Http状态代码的JsonResult类。
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);
}
}
现在你可以在非错误条件下像普通Jsonresult一样使用它,在错误条件下,它可以是:
var errorModel = new { error = "There was an error" };
return new JsonHttpStatusResult(errorModel, HttpStatusCode.InternalServerError);
答案 1 :(得分:1)
您只需发送响应代码以及您的回复:
Response.StatusCode = Convert.ToInt32(System.Net.HttpStatusCode.InternalServerError);
return Json(new { Data = carrots }, JsonRequestBehavior.AllowGet);