关于javascript:C#mvc – Controller返回部分视图或json数据

C# mvc - Controller returns either partial view or json data

我正在向控制器发出ajax调用。 如果执行成功,控制器将返回一个字符串,如果发现错误,它将返回一个部分视图。 我强迫它失败,但它仍然进入ajax的成功事件。

如何在失败时将其显示为部分视图或者仅在成功时提醒字符串值?

Ajax调用:

1
2
3
4
5
6
7
8
9
10
$.ajax({
    url: '@Url.Action("GetItem","Home")',
    data: { },
    success: function (result) {
        alert(result);
    },
    error: function (result) {
        $(".MyDiv").html(result);
    }
})

控制器:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
    }
}

如果请求失败,将调用您作为ajax调用的error参数提供的函数。 这意味着响应状态代码是40 *或50 *代码之一。

但是,当您从控制器返回PartialView时,实际上响应的状态代码为200,即"正常" - 这就是调用成功函数的原因。

您可以通过在return PartialView(...之前添加Response.StatusCode = 500;来修改控制器代码,这应该可以解决问题。