我正在使用 Microsoft Enterprise Library 5.0 验证应用程序块。
我想覆盖StringLengthValidator
只有一个小的变化。
当前StringLengthValidator
很好,但问题是这个验证器正在做两项工作。NotNull
检查和字符串长度检查。如果字符串是,null
那么即使我忽略了下限检查,验证器也会触发消息。
我想要的是如果我提供一个null
值,当我忽略下限检查时验证器不应该触发,只有它应该考虑上限。
提前致谢
我正在使用 Microsoft Enterprise Library 5.0 验证应用程序块。
我想覆盖StringLengthValidator
只有一个小的变化。
当前StringLengthValidator
很好,但问题是这个验证器正在做两项工作。NotNull
检查和字符串长度检查。如果字符串是,null
那么即使我忽略了下限检查,验证器也会触发消息。
我想要的是如果我提供一个null
值,当我忽略下限检查时验证器不应该触发,只有它应该考虑上限。
提前致谢
您可以使用 Enterprise Library 附带的 Or Composite Validator。您可以使用 Not Null Validator 和 String Length Validator 来执行验证。
这是一个快速示例:
[ConfigurationElementType(typeof(CustomValidatorData))] 公共密封类 CustomValidatorClass : Validator {
public CustomValidatorClass(string template, string tag)
: base(template, tag)
{
}
protected override string DefaultMessageTemplate
{
get { return "blah blah"; }
}
public override void DoValidate(object objectToValidate, object currentTarget, string key, ValidationResults validationResults)
{
//Do something here
}
}
在配置文件中:
<validation>
<type name="ConsoleApplication1.PropertyClass" assemblyName="ConsoleApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<ruleset name="Validation Ruleset">
<properties>
<property name="MyProperty">
<validator type="ConsoleApplication1.MyClass, ConsoleApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
messageTemplate="Blah blah" name="MyClass" />
</property>
</properties>
</ruleset>
</type>
</validation>
您可以将泛型类用于您想要验证的任何特定类型或任何已经扩展 Enterprise Library API 中的 Validator 类的类。