3

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

4

1 回答 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 回答