如何通过JavaScript获取HttpStatusCodeResult的StatusDescription

时间:2011-03-21 11:35:03

标签: asp.net-mvc-2 asp.net-mvc-3

我有一个使用Ajax.BeginForm()

创建的表单
<% using (Ajax.BeginForm("UpdateCompanyShop", "CompanyShop", FormMethod.Post, 
    new AjaxOptions { OnSuccess = "updateList", OnFailure = "onError",
    UpdateTargetId="slist", LoadingElementId = "loading" }))

控制器动作代码如下所示:

if(string.IsNullOrEmpty(company.Address))  
    return new HttpStatusCodeResult(418, "Please fill in address");  
else if (company.DistrictID < 0)  
    return new HttpStatusCodeResult(418, "Please select district");  
else  
    return new HttpStatusCodeResult(418, "Error saving data");

我在AjaxOptions中使用了OnFailure =“onError”,我有这样的客户端脚本

function onError(response, status, error) {  
    var statusDescription = ***something***;  
    alert(statusDescription);
}

我在JavaScript中使用调试器但找不到StatusDescriptionHttpStatusCodeResult中的第二个参数)

知道如何获得状态描述吗?或者我不应该使用HttpStatusCodeResult?在AJAX提交中返回错误(除了验证)的正确方法是什么?

2 个答案:

答案 0 :(得分:7)

使用response.statusText

function onError(response, status, error) {
    alert("Oops! " + response.statusText);
}

我写了一篇文章,提供了更多细节和几个例子: Dealing with javascript or JSON results after an AJAX call with Ajax.ActionLink, unobtrusive AJAX and MVC 3

答案 1 :(得分:1)

我有同样的问题。我认为statusDescription应该是JavaScript OnFailure处理程序中的response.responseText。当你执行以下操作时,responseText不为空,但它不是一个非常好的解决方案imo:

Response.StatusCode = 400;
return Json("error message here", JsonRequestBehavior.AllowGet);