0

我正在使用 Microsoft Enterprise Library 5.0 验证应用程序块。

我想覆盖StringLengthValidator只有一个小的变化。

当前StringLengthValidator很好,但问题是这个验证器正在做两项工作。NotNull检查和字符串长度检查。如果字符串是,null那么即使我忽略了下限检查,验证器也会触发消息。

我想要的是如果我提供一个null值,当我忽略下限检查时验证器不应该触发,只有它应该考虑上限。

提前致谢

4

1 回答 1

0

您可以使用 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 类的类。

于 2013-04-16T07:57:16.563 回答