我的应用程序基于 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;
}
}