Как показать несколько проверочных сообщений с учетом 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);
}