2

私のアプリケーションは、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;
    }
 }
4

0 に答える 0