我正在使用Microsoft Enterprise Library 5.0验证应用程序块。
我希望覆盖StringLengthValidator
只会有一个小的改动。
当前StringLengthValidator
很好,但问题是这个验证器正在做两个工作。NotNull
检查和字符串长度检查。如果字符串是null
,则即使忽略下限检查,验证器也会触发消息。
我想要的是,如果我提供null
值,验证器在忽略下限检查时不应该触发,只有它应该考虑upperBound。
提前致谢
答案 0 :(得分:0)
您可以使用Enterprise Library附带的Or Composite Validator。您可以使用Not Null Validator和String Length Validator来执行验证。
以下是一个快速示例:
[ConfigurationElementType(typeof运算(CustomValidatorData))] public sealed class 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类的任何类。