使用 MVC 显示验证错误

Showing Validation Errors using MVC

我一直在尝试使用 MVC 的固有验证框架来显示验证错误。我正在为我的控制器使用以下代码:

[HttpPost]
        public ActionResult SaveApplication(ApplicationModel application)
        {
            if (!ModelState.IsValid)
            {                   
                return View("New",application);
            }

            ApplicationBLL.SaveApplication(application);
            return Content(string.Empty);
        }

虽然我的观点是这样的:

<tr>
        <td>Name</td>
        @Html.ValidationSummary(true)
        <td>@Html.TextBoxFor(m => m.Name)</td>
        <td>@Html.ValidationMessageFor(m => m.Name, "Name is required")</td>
    </tr>

以下是模型 class 的样子:

public class  ApplicationModel
    {
        public int ApplicationId { get; set; }

        public string ApplicationNumber { get; set; }

        [Required]
        public string Name { get; set; }

        public DateTime EventDate { get; set; }

        public string EventAddress { get; set; }
}

我的模型对名称 属性 进行了 [必需] 验证,当我将调试器放在我的控制器上时,它识别出 ModelState 无效并且 returns 回到视图,但我的页面上没有看到任何错误。我可能遗漏了一些非常微不足道的东西,因为这是我第一次使用 MVC 的验证框架。

我想补充的一件事是,我用 Ajax Post 调用 Controller 会导致这种异常吗?

<td>@Html.ValidationMessageFor(m => m.Name, "Name is required")</td>

此辅助方法生成具有以下属性的跨度:

data-valmsg-replace="false"

意味着您将在您的字段下方看到一条静态错误消息,但您将无法使用模型中定义的错误消息更改该字段。同样,您会在您的字段下看到一些静态错误消息。 如果@stephen muecke 的解决方案有效,则意味着您的问题不是将 ErrorMessage 添加到错误的位置。我在您的代码和@stephen 的回答之间看到的唯一区别是

return View("New",application);

改为

return View(application);

这意味着您可能从操作中返回了错误的视图。

试试这个,

在您的操作中添加模型错误

 ModelState.AddModelError("keyName","Error Message");

使用它在视图中显示

  @Html.ValidationMessage("keyName")