ModelState.AddModelError未显示发送的错误消息

时间:2015-10-02 11:02:00

标签: validation asp.net-mvc-3 modelstate

我正在尝试使用ModelState.AddModelError显示输入的错误消息。但是,错误消息将不会显示在视图上。以下是我的代码:

控制器:

[HttpPost]
public ActionResult Connection(Login login)
{
    if (!(ModelState.IsValid))
    {
        ModelState.AddModelError("Username", "Veuillez entrer un nom utilisateur");
        ModelState.AddModelError("Password", "Veuillez entrer un mot de passe");
        return View("LoginPage", login);
    }
    return RedirectToAction("Index");
}

我的观点:

@{
    ViewBag.Title = "LoginPage";
}
@model LayoutProject.Models.Login

<h2>LoginPage</h2>

@Html.ValidationSummary(true, "", new { @class = "text-danger" })

<form action="/Home/Connection" method="post">
    <p>
        @Html.LabelFor(l=>l.Username)
        @Html.TextBoxFor(l=>l.Username)
        @Html.ValidationMessage("Username")
    </p>
    <p>
        @Html.LabelFor(l=>l.Password)
        @Html.TextBoxFor(l=>l.Password)
        @Html.ValidationMessage("Password")
    </p>
    <p>
        <input id="createBook" type="submit" value="Submit"/>
    </p>
</form>

我的模特:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace LayoutProject.Models
{
    public class Login
    {
        [Required]
        public String Username { get; set; }
        [Required]
        public String Password { get; set; }
    }
}

当我提交表单时,它将通过if语句进入控制器,但在我看来它将显示默认错误消息:Username字段是必需的。不是我通过的那个。求救!

1 个答案:

答案 0 :(得分:0)

要在视图页面上显示模型状态错误,您需要配置ValidationSummary。 您可以在视图中执行类似的操作。

@Html.ValidationSummary(false, "youkey like username or whatever", new { @class = "text-danger" })

请在false中传递Html.ValidationSummary参数。之后,您可以看到模型状态错误。