1) как использовать мой сервис для проверки?
Вы можете использовать правило Must
:
RuleFor(x => x.Email)
.NotEmpty()
.WithMessage("Email is required.")
.EmailAddress()
.WithMessage("Invalid email format.")
.Must(userService.IsEmailUnique)
.WithMessage("Email already taken");
2) можно ли зарегистрировать несколько правил регулярных выражений с разными сообщениями об ошибках? это будет работать на стороне клиента? (если нет, как создать для него собственную логику проверки?)
Нет, вы можете иметь только один тип проверки для свойства
если нет, как создать для него собственную логику проверки?
Вы можете использовать правило Must:
RuleFor(x => x.Password)
.Must(password => SomeMethodContainingCustomLogicThatMustReturnBoolean(password))
.WithMessage("Sorry password didn't satisfy the custom logic");
3) проверка на стороне сервера будет работать автоматически до того, как модель передаст метод действия, и достаточно вызвать свойство ModelState.IsValid, или мне нужно сделать что-то еще?
Да, абсолютно. Ваше действие контроллера может выглядеть так:
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (!ModelState.IsValid)
{
// validation failed => redisplay the view so that the user
// can fix his errors
return View(model);
}
// at this stage the model is valid => process it
...
return RedirectToAction("Success");
}
UPDATE:
4) возможно ли получить доступ ко всем свойствам модели при проверке какого-либо свойства? (например, я хочу сравнить пароль и пароль подтверждения при регистрации)
Да, конечно:
RuleFor(x => x.ConfirmPassword)
.Equal(x => x.Password)
.WithMessage("Passwords do not match");