我有以下ajax调用:
$.ajax({
type: "post",
dataType: "html",
url: '@Url.Content("~/RBA/Tools/_Actions")',
data: $("#actionForm").serialize(),
success: function (response) {
debugger;
$("#DetailsEdit").removeClass('zoomInDown');
$("#DetailsEdit").addClass('flipInX');
$("#DetailsRefresh").html(response);
$("#actionPlaceholder").hide();
$("#dashSpinner").hide();
},
error: function (response) {
debugger;
$("#dashSpinner").hide();
swal({
title: "Error",
text: response.responseText,
type: "error",
showConfirmButton: true
});
}
});
我遇到了错误部分的问题,因为它正在向我返回html。当我在本地计算机上运行MVC时,我在弹出框中正确显示错误消息。当我将应用程序部署到另一台服务器时,我收到一些冗长的HTML消息,这真的很尴尬。我该如何解决这个问题?
以下是此ajax调用正在调用的控制器的catch异常块:
catch (Exception e)
{
log.Error(e);
if (e.Message.Contains("Is not a valid cause category."))
error = "The selected category is not a valid category. Please choose another category.";
else
error = "You cannot take this type of action.";
Response.StatusCode = 500;
return Json(error);
}
我知道我在ajax调用中的dataType被列为html,我需要ajax调用才能在成功时返回html,以便它可以调出另一个视图。但在我的错误中,我想得到一个字符串,以便它可以显示消息到sweetalert框。我该如何做到这一点?
提前致谢
答案 0 :(得分:1)
使用此:
return new HttpStatusCodeResult(500, error);
这将返回500 INTERNAL SERVER ERROR
结果,并将错误消息作为响应正文。
可能需要包含以下代码行,以告知IIS让您返回500:
Response.TrySkipIisCustomErrors = true