我正在使用 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 类的类。