将RegexValidator(Microsoft.Practices.EnterpriseLibrary.Validation.Validators)属性应用于十进制类型?

时间:2010-12-27 05:34:46

标签: c# asp.net validation

动机:我在类中有一个十进制属性,我希望验证它,以便它遵循正则表达式“^ \ d {1,7}。\ d {2,7} $”

所以我已将Regex验证器属性应用于属性

   [RegexValidator(@"^\d{1,7}\.\d{2,7}$"...)]
   public Decimal MyDecimalProperty { get; set; }

然后,通过我的asp.net页面上的propertyproxyvalidator,我将文本框验证绑定到此属性类型。

<cc1:PropertyProxyValidator ID="MyValidator" runat="server" ControlToValidate="MyTextBox"
PropertyName="MyDecimalProperty" SourceTypeName="Myclass, Mydll"></cc1:PropertyProxyValidator>

在运行时,我在执行验证时遇到此错误:

  

“要验证的价值不是   期望的类型:期望的System.String   但得到了System.Decimal。“

知道如何解决这个问题,或者想要实现我的动机吗?

1 个答案:

答案 0 :(得分:0)

构建正则表达式以处理字符串,而不是数字类型。也许你需要这样的东西:

public Decimal MyDecimalProperty { get; set; }

[RegexValidator(@"^\d{1,7}\.\d{2,7}$")]
public string MyDecimalPropertyString
{
    get
    {
        return this.MyDecimalProperty.ToString();
    }
}

另外,更新PropertyName的{​​{1}}属性。