对于string []或List <string>?</string>,DataAnnotations MaxLength和StringLength

时间:2014-05-19 19:53:29

标签: c# data-annotations

我试图弄清楚是否有一种正确的方法来实现DataAnnotations:

有一个数组或字符串列表,其中数组或列表中的最大元素数是2个项目,每个字符串可能只有255个字符长。这会有效吗?

[MaxLength(2)]
[StringLength(255)]
public string[] StreetAddress { get; set; }

我宁愿不必创建一个新类只是为了保存一个字符串Value属性来将每个字符串约束为255个字符。

2 个答案:

答案 0 :(得分:4)

您可以通过继承验证属性来创建自己的验证属性,如下所述:How to: Customize Data Field Validation in the Data Model Using Custom Attributes

答案 1 :(得分:3)

这是字符串列表的自定义属性:

public class StringLengthListAttribute : StringLengthAttribute
{
    public StringLengthListAttribute(int maximumLength)
        : base(maximumLength) { }

    public override bool IsValid(object value)
    {
        if (value is not List<string>)
            return false;

        foreach (var str in value as List<string>)
        {
            if (str.Length > MaximumLength || str.Length < MinimumLength)
                return false;
        }

        return true;
    }
}