2

現在、MVC データ注釈を使用してモデルの検証を実行しています。

[MinLength(4, ErrorMessage = "The {0} must be at least {2} characters long")]
[MaxLength(16, ErrorMessage = "The {0} must be {2} characters long or less")] 
[DataType(DataType.Password)]
[Display(Name = "New Password")]
public string Password { get; set; }

ただし、必須ではないが、入力フィールドに何かがある場合は MinLength が必要なフィールドの処理に行き詰まっています。単純に取り除く

[Required]

助けにならない。さらに別のカスタム検証属性を作成せずにこれを行う方法はありますか?

4

2 に答える 2

3

属性が有効な値MinLengthと見なされるため、プロパティに空または空白の文字列値があるようです:null

public override bool IsValid(object value)
{
    this.EnsureLegalLengths();
    int length = 0;
    if (value == null) 
    {
        return true; // <-- null is valid!
    }
    string str = value as string;
    if (str != null)
    {
        length = str.Length;
    }
    else
    {
        length = ((Array) value).Length;
    }
    return (length >= this.Length);
}
于 2012-11-20T23:03:11.557 に答える
2

あなたが探している注釈は

[StringLength(100, ErrorMessage = "The {0} have to be {2} characters.", MinimumLength = 8)]
public string Password { get; set; }
于 2012-11-20T23:00:28.987 に答える