Мне нравится точка расширяемости MVC, позволяющая представлениям моделей реализовывать IValidatableObject и добавлять настраиваемую проверку.
Я стараюсь поддерживать свои контроллеры стройными, используя этот код в качестве единственной логики проверки:
if (!ModelState.IsValid)
return View(loginViewModel);
Например, модель представления входа в систему реализует IValidatableObject, получает объект ILoginValidator посредством внедрения конструктора:
public interface ILoginValidator
{
bool UserExists(string email);
bool IsLoginValid(string userName, string password);
}
Кажется, что Ninject, внедрение экземпляров в модели представлений, на самом деле не является обычной практикой, может быть даже анти-паттерном?
Это хороший подход? Есть ли лучший?