这是一个奇怪的问题,但我有一个非常奇怪的情况。在我的开发服务器(IIS 和 IIS Express)上,我发出一个 ajax 请求并返回一个表单。然后,用户通过 ajax post 将表单发回,如果有任何验证错误,控制器将使用响应代码 400 发回部分视图。在我的 ajax 方法中,我拦截任何 400 错误并重新显示带有验证错误的表单。
我的问题是,当我将我的应用程序上传到我的生产服务器时,我得到的验证错误是没有部分视图的 400 响应。我什至不知道从哪里开始?这是我尝试过的,我正在使用的库以及一些示例代码。
ASP.net MVC4, Fluent Validation, jQuery, unobtrusive validation, malsup-ajaxsubmit
在我的生产服务器上...
- 我加载表单的部分视图按预期工作。这告诉我应用程序在查找我的视图时没有问题,因为如果验证失败,则会重新显示相同的视图。
- 我使用流利验证的控制器正确检测到模型状态错误并以 400 响应(只是没有视图)。
- 我使用 ajaxsubmit 的 ajax 帖子正在使用 ajax 正确发布到服务器。
- 使用 firebug,我逐步完成了我的 ajax 方法,确实返回了 400 错误,但 xhr.responseText 上的唯一内容是“Bad Request”。没有局部视图。我的开发机器再次完美运行。
这是一些代码。
我的表格获取请求:
public ActionResult CreateMedicalEvent(int userId)
{
var model = new EventModel { MedicalEventUserId = userId };
return PartialView("_Event.Create", model);
}
我的表格帖子:
[HttpPost]
public ActionResult CreateMedicalEvent(EventModel model)
{
if (!ModelState.IsValid)
{
Response.StatusCode = 400;
return PartialView("_Event.Create", model);//this does not get returned on production server
}
//the rest of my code if validation passess
}
我的ajax方法:
$('.se-form').ajaxForm({
delegation: true,
beforeSubmit: function() {
ajaxHelpers.modalProcess();//modal progress bar
},
success: function(data) {
$.modal.close();
//handle a successful post
},
error: function(xhr) {
$.modal.close();
if (xhr.status == 400) {
slideEdit.seObj.empty();//this is my form object
slideEdit.seObj.append(xhr.responseText);//all I get is "Bad Request" from production server
$.validator.unobtrusive.parse($('form', slideEdit.seObj));
ajaxHelpers.bindDates(); //because we need to bind event AND format date, we have to do this here
utilities.formatDecimal();
} else {
ajaxHelpers.exc(xhr);
}
}
});
我希望有更多的代码可以发布,但这并不是那么复杂。我的生产服务器上是否缺少一些奇怪的 dll 文件?两台服务器都安装了 MVC4。丢失。请帮忙。谢谢。