我的应用程序基于asp.net mvc3。我有一个文本框,需要一个金额,最大长度为7个字符(用户可输入的最大金额为1000000)。在文本框的模糊我格式化货币形式的金额。因此,如果用户输入1000000,它将被格式化为$ 1,00,00,00。因此格式化使输入长度为12.当我提交表单时,我在此控件上获得验证错误,告诉“它超过7个字符。”。
我尝试编写自定义验证属性MaxValueAttribute,它将用户可以输入的最大值限制为1000000.该属性的问题是它不会禁用用户输入(如我们在文本框中使用maxlength属性时)他输入了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;
}
}