首页 > 解决方案 > 基于属性验证 IEnumerable 参数 URL 中的项目数

问题描述

我正在寻找类似于RangeAttribute的东西,它指定数据字段值的数字范围约束。

我希望根据 IEnumerable 参数 URL 中的项目数进行验证。

例如

[Route("foo")]
[HttpGet]
public ActionResult<SomeResponse>GetFoos([FromQuery] idList idList)
{
   // Validate model and get stuff
}

public class IdList
{
    // Obviously, the Range attribute is wrong here
    [BindRequired, Range(1, 10, ErrorMessage = "Expected 1 to 10 ids.")]
    public List<string> Id { get; set; }
}

使用 .NET Core 3.1

标签: asp.net-core.net-core

解决方案


您可以使用:

[Required, MinLength(2, ErrorMessage = "Pick at least 2 items."), MaxLength(4, ErrorMessage = "Pick at most 4 items.")].

或者您可以创建自己的自定义模型验证属性和自定义客户端验证


推荐阅读