2

当我在控制器中生成错误并返回视图时,验证摘要不会显示。对于视图本身生成的错误,一切正常。我们怎样才能使摘要显示出来?

这是简化的控制器方法:

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

2 回答 2

3

编辑

问题是

ModelState.AddModelError(string.Empty, "You have an error");

@Html.ValidationSummary(false)

一个空字符串是""作为属性名称插入的,事件认为它是一个空字符串。false从呈现摘要中删除布尔值或传递null给模型状态包。

于 2012-11-16T16:43:01.260 回答
2

使用 MVC4,传递nullModelState.AddModelError是无效的。这实际上使用:

ModelState.AddModelError(string.Empty, "Error");

@Html.ValidationSummary(false)

原来我有两个问题。

  1. 我返回了错误的观点。
  2. 我正在使用 Ajax 调用而不是更新div.

以下为我解决了它:

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

        // Form
    }
    </div>
于 2014-04-04T14:34:04.920 回答