Return JSON with error status code MVC

前端 未结 11 1735
隐瞒了意图╮
隐瞒了意图╮ 2020-11-27 13:23

I was trying to return an error to the call to the controller as advised in This link so that client can take appropriate action. The controller is called by javascript via

11条回答
  •  北海茫月
    2020-11-27 13:53

    The neatest solution I've found is to create your own JsonResult that extends the original implementation and allows you to specify a 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);
        }
    }
    

    You can then use this in your controller action like so:

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

提交回复
热议问题