私のアプリケーションは、asp.net mvc3 に基づいています。量を取り、最大長が 7 文字のテキスト ボックスがあります (ユーザーが入力できる最大量は 1000000 です)。テキストボックスのぼかしについて、金額を通貨形式にフォーマットしています。したがって、ユーザーが 1000000 を入力すると、$ 1,00,00,00 にフォーマットされます。したがって、フォーマットにより入力の長さが12になります。フォームを送信すると、このコントロールで「7文字を超えている」という検証エラーが発生します。
ユーザーが入力できる最大値を 1000000 に制限するカスタム検証属性 MaxValueAttribute を作成してみました。属性の問題は、ユーザーが 7 を入力した後、ユーザー入力を無効にしないことです (テキスト ボックスに maxlength 属性を使用するときのように)。文字。
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;
}
}