我正在向控制器发出ajax调用。如果执行成功,控制器将返回一个字符串,如果发现错误,它将返回一个部分视图。我强迫它失败,但它仍然会进入ajax的成功事件。
如何在失败时显示部分视图或在成功时提醒字符串值?
Ajax电话:
$.ajax({
url: '@Url.Action("GetItem","Home")',
data: { },
success: function (result) {
alert(result);
},
error: function (result) {
$(".MyDiv").html(result);
}
})
控制器:
public ActionResult GetItem([DataSourceRequest]DataSourceRequest request)
{
try
{
throw new Exception("ERROR");
//return Json("Success", JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
AlertMessage alertMessage = new AlertMessage();
alertMessage.MessageText = "A critical error has occurred, please contact your administrator.";
alertMessage.ErrorMessageText = ex.ToString();
alertMessage.MessageHeading = "Critical Error";
return PartialView("~/Views/Common/ErrorMessageDisplay.cshtml", alertMessage);
}
}
答案 0 :(得分:1)
如果请求失败,将调用您作为ajax调用的error
参数提供的函数。这意味着响应状态代码是40 *或50 *代码之一。
但是,当您从控制器返回PartialView
时,实际上响应的状态代码为200,即#34; OK" - 这就是调用成功函数的原因。
您可以在Response.StatusCode = 500;
之前添加return PartialView(...
来修改您的控制器代码,这应该可以解决问题。