使用上下文验证模型

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

我想根据给定的条件验证传入的JSON。对于例如我有一个模型类定义为,

public class Component 
{
    public string Id {get; set;}

    [JsonProperty]
    [Required]
    public string Name { get; set; }

    [JsonProperty]
    public string Description { get; set; }

}

对于POST请求,我想确保调用者不发送Id属性值,因为它将由服务生成。但是,对于PUT请求,我想验证是否指定了Id属性值。我有多个需要类似功能的JSON。在控制器操作的上下文中强制进行模型验证的最佳方法是什么?我使用FluentValidation来验证JSON属性,但它不考虑上下文(控制器操作)。

c# asp.net-mvc asp.net-web-api asp.net-core-webapi fluentvalidation
1个回答
0
投票

我看待它的方式,如果您不需要用户发送ID,那么您的模型类中没有ID。

拥有多个模型是完美的,一个用于PUT,一个用于POST。这很好,因为人们知道应该通过什么属性。

所以底线:只有你在模型中需要的属性,仅此而已,这可以阻止任何歧义,并提供更高效的API。

还有一件事需要考虑,PUT通常不需要ID,因为其中一个实际上在URL中。如果URL中没有,那么您需要在模型中使用一个。

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