空数组的默认值数据批注

问题描述 投票:2回答:1

我正在创建.NET Core Web API,并希望调用提交客户订单的端点。客户ID是路径参数。在请求主体中,可以发送对象数组。每个对象都包含产品ID及其数量。但是此字段是可选的,也可以有空订单(以后可以添加产品)。

所以我从这个DTO开始

public class CreateCustomerOrderByIdDto
{
    [FromRoute]
    public uint Id { get; set; }

    [FromBody]
    public OrderPosition[] OrderPositions { get; set; }
}

public class OrderPosition
{
    [Range(1, uint.MaxValue)]
    public uint ProductId { get; set; }

    [Range(1, uint.MaxValue)]
    public uint Amount { get; set; }
}

此请求DTO应该使OrderPositions字段为可选,但是在添加项目时,该项目需要两个属性。我想为OrderPositions设置默认值(如果丢失),所以我认为此数据注释可以做到]

[DefaultValue(new OrderPosition[0])]

不幸的是我收到此错误消息

属性参数必须是常量表达式'typeof()' 属性参数类型的表达式或数组创建表达式

那么您如何将该字段标记为可选字段并设置默认值?

当不传递任何订单位置时,该数组将被转换为一个空数组,因此我可以避免进行空检查,并处理从未运行过的循环

我正在创建.NET Core Web API,并希望调用提交客户订单的端点。客户ID是路径参数。在请求主体中,可以发送对象数组。 ...

c# .net
1个回答
0
投票

也许您可以使用List<OrderPosition>代替数组。然后在构造函数中将其初始化为空列表

© www.soinside.com 2019 - 2024. All rights reserved.