我喜欢MVC的可扩展性,它允许视图模型实现IValidatableObject,并添加自定义验证。
我尝试使我的控制器保持精简,使此代码成为唯一的验证逻辑:
if (!ModelState.IsValid)
return View(loginViewModel);
例如,登录视图模型实现IValidatableObject,通过构造函数注入获取ILoginValidator对象:
public interface ILoginValidator
{
bool UserExists(string email);
bool IsLoginValid(string userName, string password);
}
似乎在视图模型中注入实例的Ninject并不是真正的惯例,甚至可能是反模式?
这是一个好方法吗?有更好的吗?
如果要在单独的对象中进行验证,请尝试FluentValidation。请参阅fluentvalidation.codeplex.com/wikipage?title=mvc。
—
rmac 2012年
+1注入一个单独的Validator类的好主意,解决了我必须访问数据库信息进行验证的问题!
—
magnattic 2015年