如何使用Enterprise Library验证Block为Double属性设置正则表达式验证。

时间:2012-10-15 05:12:07

标签: c# enterprise-library

...精工程师

我为Employee提供了以下课程。

public class Employee
{
    public string Name { get; set; }
    public double Salary { get; set; }
}

我只想将double属性Salary的Validation设置为仅接受Numbers。

我尝试过如下。

<configuration>
<configSections>
    <section name="validation" type="Microsoft.Practices.EnterpriseLibrary.Validation.Configuration.ValidationSettings, Microsoft.Practices.EnterpriseLibrary.Validation, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
</configSections>
<validation>
    <type name="namespace.Model.Common.Masters.Employee" defaultRuleset="SaveRuleset"
        assemblyName="namespace.Model.Common.Masters, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
        <ruleset name="SaveRuleset">
            <properties>
                <property name="Salary">
                    <validator type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.OrCompositeValidator, Microsoft.Practices.EnterpriseLibrary.Validation, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                        messageTemplate="Salary accept numbers only." name="Or Composite Validator">
                        <validator type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.NotNullValidator, Microsoft.Practices.EnterpriseLibrary.Validation, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                            negated="true" name="Not Null Validator" />
                        <validator type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.RegexValidator, Microsoft.Practices.EnterpriseLibrary.Validation, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
                            pattern="^[0-9]" name="Regular Expression Validator" />
                    </validator>
                </property>
            </properties>
        </ruleset>
    </type>
</validation>
</configuration>

我必须使用正则表达式吗?另请注意,我无法设置RangeValidator。

有人可以帮助我吗?

先谢谢,

此致 Sravan。

1 个答案:

答案 0 :(得分:1)

似乎你的正则表达式只是验证输入的内容是以数字开头的。试试pattern="^\d*$"
RangeValidator将尝试使用IComparable接口实现,它不会执行字符串输入所需的操作。
Or Composite验证器与否定的Not Null验证器函数相结合,使工资“可选”。目前尚不清楚这是否是你想要的。