不要显示验证摘要消息第一次MVC

时间:2015-05-28 04:38:09

标签: asp.net-mvc asp.net-mvc-4 asp.net-identity

我正在使用MVC Identity For Login和MVC Validation For Required Fields,我不想第一次显示错误消息。只有在用户点击提交按钮时才会显示。但是由于页面每次都会发布到ActionResult,所以它也向我展示了验证。 什么是不在页面加载时第一次显示消息的方法。 我已经使用此代码来清除消息,但每次都清除

enter image description here

public ActionResult Login(LoginModel model)
{
if (!ModelState.IsValid)
{
       return View("Login");
}
foreach (var key in ModelState.Keys)
{
   ModelState[key].Errors.Clear();
}
}
//Model
 public class LoginModel
{

    [Required]
    [DataType(DataType.EmailAddress)]
    [Display(Name = "Email")]
    public string Email { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }
   }

  //HTML
  @using (Html.BeginForm())
    {
        @Html.ValidationSummary("")
        @Html.TextBoxFor(model => model.Email, new { maxlength = "45", placeholder = "User Email" })
        @Html.PasswordFor(model => model.Password, new { maxlength = "45", placeholder = "User Password" })
        <button type="submit" class="LoginBtn" id="loginButton"></button>
   }

1 个答案:

答案 0 :(得分:6)

您需要从GET方法中删除LoginModel model参数。发生的事情是DefaultModelBinder在调用方法后立即初始化LoginModel的新实例。由于您没有为LoginModel的属性提供任何值,因此它们为null,因此验证错误会添加到ModelState,然后会在视图中显示。相反,您的方法需要

public ActionResult Login()
{
  LoginModel model = new LoginModel(); // initialize the model here
  return View(model);
}