【发布时间】:2012-03-27 21:41:31
【问题描述】:
客户端验证和验证摘要对我的项目(MVC4 + Razor + Unobtrusive JS)运行良好,但服务器端错误未显示在我的视图中,如果有任何客户端错误,它不会从视图中删除(它来自 ModelState)。我在 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,可能有更好的方法来自动处理这种类型的错误处理。
【问题讨论】:
标签: asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-validation