C#中的数组大小验证

我有一个带有整数输入数组的控制器方法,该方法不能为null或大于10个元素的大小.为了验证输入,我做了一堂课:

public class TestForm
{
    [Required]
    [MaxLength(10)]
    public long[] feedIds { get; set; }
}

和控制器方法:

[HttpPost]
public async Task<IActionResult> DoSomeJob(TestForm form)
{
    //Do some job
}

根据MSDN,System.ComponentModel.DataAnnotations.MaxLength可以用于数组,但是没有验证,它会获取null和任何大小的数组.我究竟做错了什么?

解决方法:

这是我们在一个项目中使用的东西:

public class LengthAttribute : ValidationAttribute {
    readonly int length;

    public LengthAttribute(int length) {
        this.length = length;
    }

    public override bool IsValid(object value) {
        if (value is ICollection == false) { return false; }
        return ((ICollection)value).Count == length;
    }
}

在如下所示的属性上:

public class CreateUserApiRequest : ApiRequest {

    [DataMember]
    [Length(128)]
    [Description("クライアントキー")]
    public byte[] clientKey { get; set; }
    ....
上一篇:php-Laravel-表单验证-数组至少需要1个字段


下一篇:php-自定义验证错误参数