1

オプションのフィールドがありますが、ある場合は正確に 6 文字の長さでなければなりません。

StringLength Dataannotation では、これが許可されていないようです。私が欲しいものを得るために物事を組み合わせる方法はありますか?理論的には正規表現を使用できますが、可能であれば避けたいと思います。

4

1 に答える 1

0

使用する:

[StringLength(6, MinimumLength = 6)]
public string MyString { get; set; }

これにより、最大 6 文字と最小 6 文字を指定しています。6 未満を入力すると、データを投稿しようとしたときに次のようなメッセージが表示されます。

The field MyString must be a string with a minimum length of 6 and a
maximum length of 6.

または正規表現:

[RegularExpression(@"^.{6,6}$")]
public string MyString { get; set; }

IValidatableObjectインターフェイスを実装することでこれを回避する方法がありますが、クライアント側/目立たない検証が失われます。検証はサーバー側で行われます。

public class MyClass : IValidatableObject
{
    public string MyString { get; set; }
    // ... Other fields ...

    public virtual IEnumerable<ValidationResult> Validate(
                                                 ValidationContext validationContext)
    {
        if (!String.IsNullOrEmpty(MyString))
        {
            if(MyString.Length != 6)
            {
                // ... Validation rules ...
                yield return new ValidationResult("MyString must be 6 chars long",
                                                   new[] { "MyString" });
            }
        }
    }
}
于 2013-05-22T16:28:24.830 に答える