Почему такой код работает?

Всем привет. Разбираюсь с регистрацией пользователей в Core MVC по этому уроку. Не очень понятны несколько моментов:
1) Валидация модели
При описании метода Register() есть строчка:
if(ModelState.IsValid) {...}
Как я понял, это поле из наследуемого класса Controller. Но как именно мы проверяем модель на валидность, если мы не передавали её ни одним из параметров? Откуда класс знает, что ему нужно валидировать модель RegisterViewModel из папки ViewModels?

2) Создание пользователя
Есть строчка:
var result = await _userManager.CreateAsync(user, model.Password);

Я правильно понимаю, что всю логику по хешированию, добавлению соли и пр. берут на себя создатели Core MVC? Просто в node.js это, как правило, делалось ручками.
  • Вопрос задан
  • 251 просмотр
Решения вопроса 2
Валидация модели
Создание пользователя: начало, продолжение
всю логику по хешированию, добавлению соли и пр. берут на себя создатели Core MVC?

ASP.Net MVC - это фреймворк. Т.е. полноценная платформа для создания приложений - типичные действия есть "из коробки". Точно так же люди работают на php с laravel, Yii2 и т.д.
Но никто не запрещает вам городить свой велосипед: изменять логику проверки моделей/алгоритмы генерации, хранения, проверки пароля/логику авторизации в принципе, логику работы конвейера http-запросов...
Ответ написан
Комментировать
@kttotto
пофиг на чем писать
1. Поставьте брекпоинт в контроллере и посмотрите this.Request.Query, там будут все параметры, что пришли в контроллер, так же они могут быть в Body. Именно для этого и нужны атрибуты FromBody и FromRequest, чтобы точнее указать от куда мапить значения на модель. После того как он спарсит и смапить значения в модель, если есть проверка, он возьмет атрибуты и по ним уже проверит на валидность.

2. Вы правильно понимаете. Все это реализовано в identity.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы