MaxLength和StringLength用于string[]或List

本文关键字:string List StringLength 用于 MaxLength | 更新日期: 2023-09-27 18:04:19

我试图找出是否有一个适当的方法来实现这与DataAnnotations:

有一个字符串数组或列表,其中数组或列表中元素的最大数量为2个,并且每个字符串只能有255个字符长。这行吗?

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

我宁愿不做一个新的类,只是保持一个字符串Value属性,以约束每个字符串为255个字符。

MaxLength和StringLength用于string[]或List<string>

您可以通过继承验证属性来创建自己的验证属性,如下所述:如何:使用自定义属性在数据模型中自定义数据字段验证

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

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;
    }
}