I tried to find the way to return 400 error code with JSON error result.
I think this is the best way and easy to implement.
Create the custom class as below.
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;
context.RequestContext.HttpContext.Request.ContentType = "application/json";
base.ExecuteResult(context);
}
}From the controller, return the result with above custom class.
if (validationInfo.Errors.Any())
{
return new JsonHttpStatusResult(validationInfo, HttpStatusCode.BadRequest);
}