эта статья посвящена использованию проверки на стороне клиента, поэтому вы проверяете форму на стороне клиента.из-за этого форма проверяется с помощью jquery, когда вы теряете фокус!
одним из способов будет использование проверки на стороне сервера. В этом случае у вас будет обновление страницы.
Обновление:
Вот пример кода.
Модель:
public class GuestForm
{
[Required(ErrorMessage="Please enter your name")]
public string Name { get; set; }
[Required(ErrorMessage="Please enter your phone number")]
public string Phone { get; set; }
[Required(ErrorMessage="Please enter your email address")]
public string Email { get; set; }
[Required(ErrorMessage = "Please enter your choice")]
public bool? YesNo { get; set; }
}
Форма:
<div>
<% using(Html.BeginForm()) { %>
<%= Html.ValidationSummary() %>
Name: <%= Html.TextBoxFor(x => x.Name) %><br/>
Email: <%= Html.TextBoxFor(x => x.Email) %><br/>
Phone: <%= Html.TextBoxFor(x => x.Phone) %><br/>
Will you attend?
<%= Html.DropDownListFor(x => x.YesNo, new[] {
new SelectListItem { Text = "Yes",Value = bool.TrueString },
new SelectListItem { Text = "No",Value = bool.FalseString }
}, "Choose...") %><br/>
<input type="submit" value="Register!" />
<% } %>
</div>
Контроллер:
[HttpGet]
public ViewResult RegisterForm()
{
return View();
}
[HttpPost]
public ViewResult RegisterForm(GuestForm form)
{
if (ModelState.IsValid)
return View("Thanks", form);
else
return View();
}
этот код будет видеть, что ваша форма проверяется на стороне сервера, когда пользователь нажимает кнопку Отправить.в верхней части формы будет отображаться сообщение об ошибке в виде списка.
Надеюсь, это вам поможет.