MVC中的Ajax表单验证

时间:2014-02-28 11:52:01

标签: javascript jquery ajax asp.net-mvc asp.net-mvc-4

我有一个Ajax表单,我需要在失败时点击JavaScript函数,如下所示:

using (Ajax.BeginForm("UpdateStages", new AjaxOptions
{
    HttpMethod = "POST",
    OnSuccess = "refreshSearchResults('" + @Model.First().ItemCode + "')",
    OnFailure = "showError"
}))

使用showError函数获取Ajax上下文响应并将其附加到div,如下所示:

function showError(ajaxContext) 
{
    var response = ajaxContext.responseText;
    response = $($.trim(response));
    var itemVersion = response.filter("div")[0].innerHTML.trim().toString();
    var error = response.filter("p")[0].outerHTML.toString();
    $("#" + itemVersion.replace(".", "") + "-UpdateStagesResults").empty();
    $(error).appendTo("#" + itemVersion.replace(".", "") + "-UpdateStagesResults");
}

为了在我的MVC控制器OnFailure中调用ActionResult,当发生错误时:

Response.StatusCode = (int)HttpStatusCode.BadRequest;
return PartialView();

返回PartialView,其中包含ViewBag中的错误消息。这在本地运行时工作正常,错误消息被发送到showError函数,然后错误被附加到页面。

问题在于,当我将应用程序放到实时服务器(IIS7)上时,Ajax上下文只是

  

错误请求

例如不是:

<p>You have not entered a valid date.</p>
<div style="display:none;">V7.0  </div>

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:2)

我有这个,

在IIS7中,

默认错误设置仅在本地显示详细错误消息。您的视图将替换为状态代码的默认值。

如果您想查看自定义错误,请将其添加到您的web.config

<system.webServer>
    <httpErrors errorMode="Detailed" />
</system.webServer>

应该排序