.Net MVC4 - How to return exception in json format?
我有一个MVC4应用程序,我使用jQuery从javascript调用控制器操作。 当控制器中发生异常时,返回的响应文本为HTML格式。 我希望它是JSON格式。 怎么能实现这一目标?
我认为一些JSON格式化程序应该自己做魔术......
JavaScript的
1 2 3 4 5 | // Call server to load web service methods $.get("/Pws/LoadService/", data, function (result) { // Do stuff here },"json") .error(function (error) { alert("error:" + JSON.stringify(error)) }); |
.Net控制器行动
1 2 3 4 5 6 7 | [HttpGet] public JsonResult LoadService(string serviceEndpoint) { // do stuff that throws exception return Json(serviceModel, JsonRequestBehavior.AllowGet); } |
实际上,您在错误函数中跟踪的错误与请求有关,而与应用程序的错误无关
所以我会在Json结果中传递错误细节,就像这样:
1 2 3 4 5 6 7 | try { //.... return Json(new {hasError=false, data=serviceModel}, JsonRequestBehavior.AllowGet); } catch(Exception e) { return Json(new {hasError=true, data=e.Message}, JsonRequestBehavior.AllowGet); } |
在客户端,您可以处理类似的事情:
1 2 3 4 5 6 7 8 9 10 | $.get("/Pws/LoadService/", data, function (result) { var resultData = result.d; if(resultData.hasError == true) { //Handle error as you have the error's message in resultData.data } else { //Process with the data in resultData.data } },"json") ... |