Мой звонок по Ajax:

$.ajax({ url: './Orders/SaveOrder', type: "POST", data: JSON.stringify(data), dataType: "JSON", contentType: "application/json", success: function (d) { if (d.status == true) { alert('Successfully saved.'); } else { alert('Failed'   d.ErrorMessage); } }, error: function (error) { alert('Error. Please try again.'); } 

И мое действие контроллера SaveOrder:

  [HttpPost] public JsonResult SaveOrder(OrderVM o) { try { if (ModelState.IsValid) { // do some database work } } return new JsonResult { Data = new { status = status} }; } catch (Exception ex) { // how to return jsonresult with error? } } 

Как мне получить ajax-запрос на получение деталей из блока try-catch? В частности, как секция ‘error: function …’ возвращает код обратно?

можешь попробовать:

 return new HttpStatusCodeResult(500, ex.Message); 

Я считаю, что это будет работать с Ajax, и вы можете получить сообщение об ошибке из параметра ошибки. Надеюсь, что это работает!

edit: для ошибки ajax, вы можете получить доступ к сообщению об ошибке:

  error: function (error) { alert(error.statusText); }