leo*_*ora 4 c# ajax asp.net-mvc jquery exception-handling
我看到当我从ajax调用返回HttpException()时,我得到一个大的html文本.
如果我在我的控制器中做这样的事情:
if (errors.Count > 0)
{
throw new HttpException(404, "This is my custom error msg");
}
Run Code Online (Sandbox Code Playgroud)
我想要一个简单的方法来解析javascript端的错误消息.现在,当我用这样的东西看客户端的回调时
function decodeErrorMessage(jqXHR, textStatus, errorThrown) {
Run Code Online (Sandbox Code Playgroud)
我看到jqxHR ="3",textStatus =一个非常长的html doc(带有调用堆栈和错误消息,errorThrown是"错误")
简单地传回并从http异常中显示错误的最佳方法是什么?
而不是在控制器中抛出异常,捕获它并设置AJAX响应的响应代码:
使用JQuery查看逻辑设置:
$("#btnRefresh").live("click", function(e) {
$.ajax({
type: "POST",
url: '@Href("~/Home/Refresh")',
data: "reportId=@Model.Id"
})
.done(function(message) {
alert(message);
})
.fail(function(serverResponse) {
alert("Error occurred while processing request: " + serverResponse.responseText);
});
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
然后在您的Controller代码中捕获异常而不是抛出异常:
[HttpPost, VerifyReportAccess]
public ActionResult Refresh(Guid reportId)
{
string message;
try
{
message = _publisher.RequestRefresh(reportId);
}
catch(Exception ex)
{
HttpContext.Response.StatusCode = (Int32)HttpStatusCode.BadRequest;
message = ex.Message;
}
return Json(message);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |