Как показать несколько проверочных сообщений с учетом MVC5

В моем представлении есть текстовое поле (электронная почта) и кнопка отправки.

@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: Показать сообщение проверки для ввода идентификатора электронной почты, когда текстовое поле остается пустым.

Случай 2: кнопка "Отправить" вызывает сообщение, если электронная почта существует. Если почта не проходит (ложно), должно прийти сообщение о проверке, что электронная почта не существует. При нажатии кнопки "Отправить" выполняется переход к контроллеру, который отправляет почту на указанный адрес электронной почты. В случае успеха я верну другое представление с сообщением об успехе, в противном случае я верну то же представление (представление EmailLink)

В веб-формах asp.net это кажется простым, но выглядит совсем по-другому, и я озадачен, как реализовать это в MVC, поскольку я новичок в этом.

РЕДАКТИРОВАТЬ: Мне нужно, чтобы это было реализовано с помощью пользовательской проверки. Не используя аннотации данных.

1 ответ

Есть два простых способа сделать это, вы можете проверить на стороне клиента или на стороне сервера.

клиентская сторона:

Импортируйте этот плагин 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);
}
Другие вопросы по тегам