У меня есть несколько методов в контроллере, которые выглядят как:ASP.NET MVC Обработка исключений с AJAX/JSON
[HttpPost]
public ActionResult AddEditCommentToInvoice(string invoiceNumber, string comments)
{
var response = new { success = true, msg = "Comment saved", statusMsg = "Comment saved" };
try
{
var recordsModified = invoiceService.AddCommentsToInvoice(invoiceNumber, comments);
Log.Info(recordsModified ? "Updated Comment" : "Did not update Comment");
} catch (Exception ex) {
Response.StatusCode = (int)HttpStatusCode.InternalServerError;
return Json(new {
success = false,
msg = "There is missing field data",
statusMsg = ex.Message
}, JsonRequestBehavior.AllowGet);
}
return Json(response, JsonRequestBehavior.AllowGet);
}
Хотя этот код работает, я не комфортно с этим подходом, потому что:
- Try/Задвижки дорогие
- код улавливает System.Exception
- код некрасиво
Теперь я знаю, что могу использовать OnException или атрибут HandleError.
Я также провел некоторое исследование ELMAH, и это выглядит многообещающим.
Но я все еще хочу вернуть JSON через AJAX моему пользователю, чтобы указать, была ли операция успешной или нет.
Итак, мой вопрос: кто-нибудь использовал любой из трех методов (или, в частности, ELMAH), чтобы вернуть JSON через AJAX?
ELMAH только контролирует и сообщает о необработанных исключениях, он не изменяет поток приложений, подход к атрибутам - ваш лучший выбор. – KiwiPiet
Я делаю то же самое, и я всегда ненавидел его. Я с нетерпением жду решения. Это всегда был один из тех элементов моего «технического долга». – kryptonkal
@ kryptonkal - Я только что наткнулся на это - http://plainoldstan.blogspot.cz/2012/08/mvc-3-elmah-handle-ajaxjson-action.html – coson