I am trying to return the error status after migrating an Asp.Net MVC 5 application to the Core version.
In my old application I used a class (JsonHttpStatusResult
) that inherits from JsonResult
and returned a catch error if any. However, when trying to add this to the new project, unfortunately it no longer has some features.
I would like to use this same concept for the Asp.Net Core version because I don't want to return a true or false if an error occurs in JsonResult
. The following is an example of how it worked in the MVC 5:
CLASS:
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);
}
}
EXAMPLE ON JSONRESULT
:
public JsonResult Example()
{
try
{
//Some code
return Json(/*something*/);
}
catch (Exception ex)
{
return new JsonHttpStatusResult(ex.Message, HttpStatusCode.InternalServerError);
}
}
AJAX REQUEST:
$.ajax({
url: "/Something/Example",
type: "POST",
dataType: "json",
success: function (response) {
//do something
},
error: function (xhr, ajaxOptions, thrownError) {
//Show error
}
});
How to do this or something similar in Asp.Net Core?
You don't have to create you own implementation in ASP.NET Core.
ASP.NET Core introduces a new StatusCode
Property for JsonResult
class.
So simply change your code to :
catch (Exception ex) { return new JsonResult(ex.Message){ StatusCode = (int)HttpStatusCode.InternalServerError }; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With