首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为嵌套对象创建dto验证

如何为嵌套对象创建dto验证
EN

Stack Overflow用户
提问于 2020-06-05 14:58:25
回答 1查看 44关注 0票数 0

我从一个API端点开始,通过客户id为一个客户创建一个新订单。

代码语言:javascript
运行
复制
[HttpPost("{id:int}/orders")]
public async Task<ActionResult<object>> CreateCustomerOrderByIdAsync(CreateCustomerOrderByIdDto createCustomerOrderByIdDto)
{
    // ...
}

所以DTO本身应该验证整个请求。客户id是必填字段,订单位置是可选的,订单本身可以为空。

代码语言:javascript
运行
复制
public class CreateCustomerOrderByIdDto
{
    [FromRoute]
    [Required]
    public int Id { get; set; }

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

每个OrderPositions都知道ProductIdAmount。对于数组中的此实例,这两个字段都是必需的。

代码语言:javascript
运行
复制
public class OrderPosition
{
    [Required]
    public int ProductId { get; set; }

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

当我使用以下json主体调用端点https://localhost:5001/customers/1/orders

代码语言:javascript
运行
复制
{
    "orderPositions": [{}]
}

我希望是400,因为该数组包含一个没有ProductIdAmount字段的对象。但是,它采用的不是错误,而是整数的默认值0。如何也验证OrderPositions数组中的每个OrderPosition

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-05 15:06:40

您还需要在ProductId上使用Range。如果您的ProductId从1开始,则如下所示:

代码语言:javascript
运行
复制
[Required]
[Range(1, int.MaxValue)]
public int ProductId { get; set; }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62209792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档