使用可选字段的数据注释

时间:2013-05-22 16:22:57

标签: c# data-annotations

我有一个可选的字段,但如果它在那里它必须正好六个字符。

StringLength Dataannotation似乎不允许这样做。有没有办法结合东西来得到我想要的东西?理论上我可以使用正则表达式,但如果可能的话,我想避免使用它。

1 个答案:

答案 0 :(得分: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.

OR 正则表达式:

[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" });
            }
        }
    }
}