Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пароли совпадают






if (Password! = ConfirmPassword)

{

yield return new ValidationResult(" Пароли не совпадают", new string[] { " ConfirmPassword" });

}

}

}

Мы смогли сделать проверку 4 из 6 правил валидации, но оставим пока так, а остальные добавим непосредственно в контроллере.

Выполняем форму, получаем:

Видим, что обе наши ошибки были отловлены.

Есть два стандартных метода вывести ошибку: это Html.ValidationMessage(“ErrorField”) и Html.ValidationSummary(). Первый выводит ошибку, связанную с конкретным неверновведенным полем, а второе — выведет все (или все оставшиеся) ошибки.

Добавляем в контроллер проверку на капчу и проверку на существование Email в БД:

 

if (user.Captcha! = " 1234")

{

ModelState.AddModelError(" Captcha", " Текст с картинки введен неверно");

}

var anyUser = Repository.Users.Any(p => string.Compare(p.Email, user.Email) == 0);

if (anyUser)

{

ModelState.AddModelError(" Email", " Пользователь с таким email уже зарегистрирован");

}

И результат:

 

Что ж, с задачей мы справились, но в дальнейшем, используя такой способ, мы получим несколько проблем:

· Класс User всегда будет содержать проверку на необходимость введения пароля и идентичность паролей, а, например, при изменении данных в личном кабинете, мы вообще не должны вводить пароль. Т.е. необходимо будет вводить другие поля, которые будут обозначать: это регистрация, это смена пароля, это изменение данных.

· Валидацию мы сделали частично в Model-части и частично в Controller-части – это не совсем хрестоматийно.

Но есть решение, мы создаем класс, который является представлением класса User, организующим валидацию. Мы назовем его UserView и создадим в папке Models/ViewModels:






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.