我有一个 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");
}
为了在发生错误时调用 OnFailure
,我在 MVC Controller ActionResult
中调用:
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return PartialView();
它返回一个PartialView
,并在ViewBag
中包含错误消息。这在本地运行时工作正常,错误消息被发送到 showError
函数,然后错误被附加到页面。
问题是,当我将应用程序放到实时服务器(IIS7)上时,Ajax 上下文只是
Bad Request
例如不是:
<p>You have not entered a valid date.</p>
<div style="display:none;">V7.0 </div>
任何帮助都会很棒!
最佳答案
我已经有这个了,
在 IIS7 中,默认错误设置仅在本地显示详细错误消息。您的 View 将替换为状态代码的默认值。
如果您想查看自定义错误,请将其添加到您的 web.config 中
<system.webServer>
<httpErrors errorMode="Detailed" />
</system.webServer>
应该对它进行排序
关于javascript - MVC 中的 Ajax 表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22094422/