我正在使用数据注释来验证我的模型类。我也写了几个自定义属性。最终,模型被推送到 ASP.NET MVC 中构建的 Web 界面,但我想保持关注点的清晰分离,因此模型类有自己的程序集(控制台应用程序也将使用它)。必须在模型层中使用IClientValidatable
接口(这是一个网络问题)打破了我想要的松散耦合。有想法该怎么解决这个吗?谢谢。
问问题
443 次
1 回答
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));
于 2013-10-28T16:24:27.670 回答