我有一个具有两个属性的类。我要验证其中一个,这是另一个类,并且我已经在要验证的每个属性上都声明了[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);
。
我在做什么错?
问题是我没有指定正确的true
(实际上是ValidationContext
类和属性),因为我假设(不带参数)创建“父”类本身的ValidationContext会“神奇地”使用Cabecera
验证每个属性。
请注意要尝试验证的内容以及实际创建的DataAnnotations
!
ValidationContext