Validationsummary不显示控制器中生成的错误

时间:2012-11-16 16:39:11

标签: c# asp.net-mvc asp.net-mvc-3

当我在控制器中生成错误并返回视图时,验证摘要不会显示。一切都适用于从视图本身生成的错误。我们如何才能使摘要显示出来?

这是简化的控制器方法:

[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...
}

2 个答案:

答案 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)

原来我遇到了两个问题。

  1. 我回错了。
  2. 我正在使用Ajax调用而不是更新div
  3. 以下为我解决了这个问题:

        <div id="results">
        @{
        using (Ajax.BeginForm("CreateLookupTable", "Lookup", new AjaxOptions { HttpMethod = "POST", OnSuccess = "FormSuccess()", UpdateTargetId ="results" }))
        {
            @Html.ValidationSummary(false)
    
            // Form
        }
        </div>