字符串字段的货币范围和格式验证器

时间:2013-08-08 04:40:54

标签: c# data-annotations

以下条件的正确货币数据注释是什么?

  1. 带小数点后2位的数字量。
  2. 最低金额$ 1.00;最高金额$ 25000.00
  3. 这是我的领域。

    public string amount {get; set;}
    

2 个答案:

答案 0 :(得分:0)

请使用link.

后面的文化信息类

答案 1 :(得分:0)

要检查小数位,您可以使用正则表达式注释和正确的正则表达式来匹配您的数字格式:

[RegularExpression(@"(\.\d{2}){1}$")]

要检查最小值和最大值,我们必须创建自己的自定义属性

[MinDecimalValue(1.00)]
[MaxDecimalValue(25000.00)]
public string amount { get; set; }

我们可以通过创建一个派生自 ValidationAttribute 的类并覆盖 IsValid 方法来实现此目的。

请参阅下面的实施。

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
    public class MaxDecimalValueAttribute : ValidationAttribute
    {
        private double maximum;
        public MaxDecimalValueAttribute(double maxVal)
            : base("The given value is more than the maximum allowed.")
        {
            maximum = maxVal;
        }
        public override bool IsValid(object value)
        {
            var stringValue = value as string;
            double numericValue;
            if(stringValue == null)
                return false;
            else if(!Double.TryParse(stringValue, out numericValue) ||  numericValue > maximum)
            {
                return false;
            }
        return true;
    }
}

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class MinDecimalValueAttribute : ValidationAttribute
{
    private double minimum;
    public MinDecimalValueAttribute(double minVal)
        : base("The given value is less than the minimum allowed.")
    {
        minimum = minVal;
    }
    public override bool IsValid(object value)
    {
        var stringValue = value as string;
        double numericValue;
        if (stringValue == null)
            return false;
        else if (!Double.TryParse(stringValue, out numericValue) || numericValue < minimum)
        {
            return false;
        }

        return true;
    }
}

您可以阅读有关如何创建自己的属性的更多信息,此代码也需要更多改进。

希望这有帮助!