我正在使用数据注释来验证我的模型类。我也写了几个自定义属性。最终,该模型被推送到ASP.NET MVC中构建的Web界面,但我希望保持关注点的清晰分离,因此模型类具有自己的程序集(控制台应用程序也将使用它)。必须在模型层中使用IClientValidatable
接口(这是一个Web关注点)打破了我的目标松散耦合。有想法该怎么解决这个吗?感谢。
答案 0 :(得分:2)
您可以为数据注释属性添加适配器。
例如,您有MyValidationAttribute。
您需要添加以下适配器:
public class MyValidationAttributeAdapter : DataAnnotationsModelValidator<MyValidationAttribute>
{
public MyValidationAttributeAdapter(ModelMetadata metadata, ControllerContext context, MyValidationAttribute attribute) : base(metadata, context, attribute)
{
}
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
//return client rule here
return base.GetClientValidationRules();
}
}
在应用程序开始的某处添加代码,注册此适配器:
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(MyValidationAttribute), typeof(MyValidationAttributeAdapter));