客户端验证和 ValidationSummary 对我的项目(MVC4 + Razor + Unobtrusive JS)运行良好,但服务器端错误未显示在我的视图中,如果有任何客户端错误,它不会从视图中删除(它确实来自模型状态)。我在 Chrome14 和 IE9 上都试过了
服务器端错误被添加到模型中,ModelState.AddModelError(string.Empty, ModelState.AllErrors());
并在视图中显示为@Html.ValidationSummary(false)
。
编辑
简单的表单提交工作正常,它显示了从服务器返回的多条错误消息并更新了错误消息,但是,基于 ajax 的表单提交不起作用,根本不显示基于 ajax 的表单提交返回的错误消息。
这是如何发出请求的示例演示
@*... View contents related to Master Model ...*@
@using (Ajax.BeginForm("ActionToAddRecord", new AjaxOptions()))
{
@Html.Action("ActionToAddRecord")
<input type="submit" value="Add Record"/>
}
@*... View contents related to Master Model ...*@
ActionToAddRecord 是表示主模型包含的模型的局部视图
错误返回为
[HttpGet]
public ActionResult ActionToAddRecord()
{
return View();
}
[HttpPost]
public ActionResult ActionToAddRecord(childModel model)
{
ModelState.AddModelError(string.Empty, "First error message");
ModelState.AddModelError(string.Empty, "Second error message");
return View(model);
}
编辑
我在 VS2010 的模板化 MVC 应用程序中看到了类似的功能,即基于对话框的登录表单。错误消息以 Json 形式返回,然后 JS 用于显示它们,IMO,似乎 MS 使基于 Ajax 的请求变得非常简单和简洁(Ajax.BeginForm
)但缺少错误处理部分。现在我不愿意为此使用 JS,可能有更好的方法来自动处理这种类型的错误处理。