如何根据MVC5显示多个验证消息

时间:2016-06-23 17:09:23

标签: c# asp.net asp.net-mvc asp.net-mvc-5 asp.net-validators

我的观点有一个文本框(电子邮件)和一个提交按钮。

@using (Html.BeginForm("FindMyDetail", "ResetPassword", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
   {
      @Html.AntiForgeryToken()
      <h4>Enter your email.</h4>

     @Html.ValidationSummary(false, "", new { @class = "alert alert-danger" })

 @Html.ValidationMessageFor(m=>m.Email)
<div class="form-group">
    @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" })
    <div class="col-md-10">
        @*@Html.TextBoxFor(m => m.Email, new { @class = "form-control", @value = @Html.DisplayFor(m => m.Email) })*@
        @Html.TextBoxFor(m => m.Email, true, htmlAttributes: new { @class = "form-control", placeholder = "Enter Email Id you used to register" })
    </div>
</div>
<div class="form-group">
    <div class="col-md-offset-2 col-md-10">

        <input type="submit" class="btn btn-default" value="Email Link" />

    </div>
</div>

}

我必须在MVC网络应用程序的视图中显示多个验证消息。

案例1:显示验证消息,以便在文本框留空时输入电子邮件ID。

案例2:如果电子邮件存在,则提交按钮会触发邮件。如果邮件失败(错误),则应出现电子邮件不存在的验证消息。 单击提交按钮将转到控制器,该控制器触发给定电子邮件的邮件。如果成功我将返回一个不同的视图与成功消息否则我将返回相同的视图(EmailLink视图)

在asp.net webforms中实现这一点似乎很容易,但看起来非常不同,并且很困惑如何在MVC中实现它,因为它是新手。

编辑:我需要使用自定义验证来实现它。不使用数据转换。

1 个答案:

答案 0 :(得分:0)

执行此操作有两种简单方法,您可以在客户端或服务器端进行验证。

客户端

在您的页面中导入此jquery插件: http://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/jquery.validate.min.js

在您的javascript文件中,您可以创建所需的验证,例如:

$(document).ready(function() {
  $("#FindMyDetail").validate({
    rules: {
      Email: {
        required: true,
        maxlength: 40,
        email: true
      }
    },
    messages: {
      Email: {
        required: "We need your email address to contact you",
        email: "Your email address must be in the format of name@domain.com"
      }
    }
  });
});

服务器端

您可以使用asp.net框架让它验证您的模型。您必须使用某些属性来装饰模型,例如:

public class Person
{
    public int ID { get; set; }

    [Required]
    [StringLength(40)]
    public string Email { get; set; }
}

在控制器的行动中:

[HttpPost]
public ActionResult Create(Person person)
{
    if (ModelState.IsValid)
    {
        //foo
        return RedirectToAction("Index");
    }

    return View(person);
}