使用上下文验证模型

时间:2018-02-28 14:20:39

标签: c# asp.net-mvc asp.net-web-api asp.net-core-webapi fluentvalidation

我想根据给定的条件验证传入的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属性,但它不考虑上下文(控制器操作)。

1 个答案:

答案 0 :(得分:0)

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

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

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

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