Возврат результата статуса HTTP в Json Возврат из ActionResult - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужно вернуть статус ошибки моих действий в представление.Я использовал JsonResult, но теперь мне нужно использовать ActionResultJsonResult он работает следующим образом:

ПРИМЕР ДЕЙСТВИЯ

[HttpPost]
public JsonResult Page(Guid? id)
{
    try
    {
        if (id == Guid.Empty)
        {
            return new JsonHttpStatusResult("The ID is Empty", HttpStatusCode.BadRequest);
        }

        var model = ArquivoManager.List(id, ref db);
        if (model == null)
        {
            return new JsonHttpStatusResult("Not Found", HttpStatusCode.NotFound);
        }

        return Json(model, JsonRequestBehavior.AllowGet);
    }
    catch (Exception ex)
    {
        return new JsonHttpStatusResult(ex.Message, HttpStatusCode.InternalServerError);
    }
}

JsonHttpStatusResult

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);
        }
    }

AJAX ON VIEW

$.ajax({
    type: "POST",
    url: '/School/Page',
    dataType: "json",
    success: function (resposta) {
        //something
    },
    error: function (xhr, ajaxOptions, thrownError) {
      alert(thrownError.toUpperCase() + ": " + xhr.responseJSON);
    }
});

Вместо того, чтобы мое действие было JsonResult, мне нужно реализовать действия с ActionResult, и поэтому я хотел бы подобное решение для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...