Validator.TryValidateObject在所有情况下始终返回true

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

我有一个具有两个属性的类。我要验证其中一个,这是另一个类,并且我已经在要验证的每个属性上都声明了[Required(ErrorMessage = "Error message", AllowEmptyStrings = false)]

public partial class Factura
{
    [JsonProperty("Cabecera")]
    public Cabecera Cabecera { get; set; }
    public string Imagen { get; set; }
}

public partial class Cabecera
{
    [Required(ErrorMessage = "Debe especificarse un emisor", AllowEmptyStrings = false)]
    [JsonProperty("Emisor")]
    public string Emisor { get; set; }

    [Required(ErrorMessage = "Debe especificarse un número de factura", AllowEmptyStrings = false)]
    [JsonProperty("Factura")]
    public string Factura { get; set; }
}

实际执行验证:

var test = new Factura();
var errors = new List<ValidationResult>();
Validator.TryValidateObject(test, new ValidationContext(test), errors, true);

[C0总是在很明显对象不应该通过验证的情况下始终返回Validator.TryValidateObject(test, new ValidationContext(test), errors, true);

我在做什么错?

c# data-annotations
1个回答
0
投票

问题是我没有指定正确的true(实际上是ValidationContext类和属性),因为我假设(不带参数)创建“父”类本身的ValidationContext会“神奇地”使用Cabecera验证每个属性。

请注意要尝试验证的内容以及实际创建的DataAnnotations

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