Я могу ответить на другие вопрос:)
FluentValidation выглядит интересно. Они обеспечивают свободный синтаксис, такой как:
public class CustomerValidator: AbstractValidator<Customer> {
public CustomerValidator() {
RuleFor(customer => customer.Surname).NotEmpty();
RuleFor(customer => customer.Forename).NotEmpty().WithMessage("Missing first name");
}
}
Он также имеет небольшую интеграцию с ASP.NET MVC, где вы можете добавить результат проверки в ModelState, как показано ниже:
public ActionResult Save(Customer customer) {
var validator = new CustomerValidator();
var results = validator.Validate(customer);
results.AddToModelState(ModelState, "customer");
}