2

我的应用程序基于 asp.net mvc3。我有一个文本框,它需要一个数量并且最大长度为 7 个字符(用户可以输入的最大数量是 1000000)。在文本框模糊时,我将金额格式化为货币形式。因此,如果用户输入 1000000,它将被格式化为 $1,00,00,00。所以格式化使输入长度为 12。当我提交表单时,我在这个控件上收到验证错误,告诉“它超过 7 个字符。”。

我尝试编写自定义验证属性 MaxValueAttribute,它将用户可以输入的最大值限制为 1000000。该属性的问题是,在他输入 7 后,它没有禁用用户输入(就像我们在文本框中使用 maxlength 属性时一样)字符。

有什么办法可以跳过最大长度验证。

编辑1:这是MaximumValueAttribute

 public class MaximumValueAttribute : ValidationAttribute, IClientValidatable
 {
    private double MaximumValue { get; set; }

    public MaximumValueAttribute(double maxValue)
    {
        MaximumValue = maxValue;           
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {            
        if ((double)value <= MaximumValue)
            return null;

        return new ValidationResult(base.ErrorMessageString);
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var rule = new ModelClientValidationRule
        {
            ErrorMessage = base.ErrorMessageString,
            ValidationType = "maximumamount",
        };

        rule.ValidationParameters["maximumvalue"] = MaximumValue;

        yield return rule;
    }
 }
4

0 回答 0