【问题标题】:CustomStringLengthValidator Required - (patterns & practices – Enterprise Library)需要 CustomStringLengthValidator -(模式和实践 – 企业库)
【发布时间】:2013-04-16 07:45:01
【问题描述】:

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

我想覆盖StringLengthValidator,它只有一个小改动。

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

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

提前致谢

【问题讨论】:

    标签: c# .net enterprise-library enterprise-library-5


    【解决方案1】:

    您可以使用 Enterprise Library 附带的 Or Composite Validator。您可以使用 Not Null Validator 和 String Length Validator 来执行您的验证。

    这是一个简单的示例:

    [ConfigurationElementType(typeof(CustomValidatorData))] 公共密封类 CustomValidatorClass : 验证器 {

        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 类的类。

    【讨论】:

    • 感谢重播。但是每次我都必须使用两个验证器。我正在寻找一个永久的解决方案,比如创建一个 CustomStringLengthValidator,我想了解更多关于制作自定义验证器的信息。
    • 您可以通过扩展 ValueValidator 类来创建自己的验证器。
    • 好吧...但是在上面的示例中,我如何传递验证字符串长度所需的 MaxLength。
    • 您需要自己解决。我不会为你写代码。至少不是免费的。 :)
    • @SukeshChand,看看Hands-On Labs for Microsoft Enterprise Library 5.0。有创建自定义验证器的练习。
    猜你喜欢
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多