当我在控制器中生成错误并返回视图时,验证摘要不会显示。一切都适用于从视图本身生成的错误。我们如何才能使摘要显示出来?
这是简化的控制器方法:
[HttpPost]
public ActionResult EditProfil(Prospect prospect)
{
ModelState.AddModelError(string.Empty, "You have an error");
if (!ModelState.IsValid)
return View("Edit", prospect);
return Json(prospect);
}
视图如下:
@model Prospect
@{
ViewBag.Title = "Profil du prospect";
Layout = null;
}
//Some javascript and CSS unrelated to validations
@using (Html.BeginForm())
{
@Html.ValidationSummary(false)
//My form controls...
}
答案 0 :(得分:3)
修改强>
问题是
的组合ModelState.AddModelError(string.Empty, "You have an error");
和
@Html.ValidationSummary(false)
一个空字符串是""
,它被作为属性名称进行交互,事件认为它是一个空字符串。从呈现摘要中删除布尔值false
或将null
传递给modelstate包。
答案 1 :(得分:2)
使用MVC4,将null
传递给ModelState.AddModelError
无效。这实际上使用:
ModelState.AddModelError(string.Empty, "Error");
和
@Html.ValidationSummary(false)
原来我遇到了两个问题。
div
。以下为我解决了这个问题:
<div id="results">
@{
using (Ajax.BeginForm("CreateLookupTable", "Lookup", new AjaxOptions { HttpMethod = "POST", OnSuccess = "FormSuccess()", UpdateTargetId ="results" }))
{
@Html.ValidationSummary(false)
// Form
}
</div>