Проверка ASP.Net MVC с помощью DataAnnotations - PullRequest
0 голосов
/ 04 сентября 2010

Я проследил за блогом Скотту здесь и попытался проверить данные.Преемник.Однако я вижу, что если мое поле является обязательным, я получаю сообщение об ошибке, как только теряю фокус из своего текстового поля.Я хочу, чтобы проверка выполнялась только тогда, когда я нажимаю "Отправить".

1 Ответ

0 голосов
/ 04 сентября 2010

эта статья посвящена использованию проверки на стороне клиента, поэтому вы проверяете форму на стороне клиента.из-за этого форма проверяется с помощью 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();
        }

этот код будет видеть, что ваша форма проверяется на стороне сервера, когда пользователь нажимает кнопку Отправить.в верхней части формы будет отображаться сообщение об ошибке в виде списка.

Надеюсь, это вам поможет.

...