Próbuję sprawdzić klasę ozdobioną adnotacjami danych za pomocą Validator class.Sprawdzanie poprawności atrybutów danych za pomocą klasy Validator
Działa poprawnie, gdy atrybuty są stosowane do tej samej klasy. Ale kiedy próbuję użyć klasy metadanych, to nie działa. Czy jest coś, co powinienem zrobić z Validatorem, więc używa klasy metadanych? Oto niektóre kodu ..
to działa: praca
public class Persona
{
[Required(AllowEmptyStrings = false, ErrorMessage = "El nombre es obligatorio")]
public string Nombre { get; set; }
[Range(0, int.MaxValue, ErrorMessage="La edad no puede ser negativa")]
public int Edad { get; set; }
}
to robi:
[MetadataType(typeof(Persona_Validation))]
public class Persona
{
public string Nombre { get; set; }
public int Edad { get; set; }
}
public class Persona_Validation
{
[Required(AllowEmptyStrings = false, ErrorMessage = "El nombre es obligatorio")]
public string Nombre { get; set; }
[Range(0, int.MaxValue, ErrorMessage = "La edad no puede ser negativa")]
public int Edad { get; set; }
}
to jak mogę zweryfikować instancje:
ValidationContext context = new ValidationContext(p, null, null);
List<ValidationResult> results = new List<ValidationResult>();
bool valid = Validator.TryValidateObject(p, context, results, true);
dzięki.
nie mogę znaleźć ValidationContext ciągu System.ComponentModel.DataAnnotations (MVC 2.0) robię coś źle? – Myster
@Myster sprawdź, czy odwołuje się do pliku System.ComponentModel.DataAnnotations.dll w projekcie. – Pablote
Po prostu użyj tego [gist] (https://gist.github.com/JimmyBoh/b7c135820c18a06648a5) (metoda rozszerzenia) i możesz wywołać p.Validate() –