Sto provando a convalidare una classe decorata con annotazione dati con Validator class.Convalida datiAnnotazioni con classe Validator
Funziona correttamente quando gli attributi vengono applicati alla stessa classe. Ma quando provo a usare una classe di metadati non funziona. C'è qualcosa che dovrei fare con il Validator in modo che usi la classe dei metadati? Ecco po 'di codice ..
questo funziona: lavoro
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; }
}
questo pretende molto:
[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; }
}
questo è come mi convalidare le istanze:
ValidationContext context = new ValidationContext(p, null, null);
List<ValidationResult> results = new List<ValidationResult>();
bool valid = Validator.TryValidateObject(p, context, results, true);
grazie.
non riesco a trovare ValidationContext entro System.ComponentModel.DataAnnotations (MVC 2.0) sto facendo qualcosa di sbagliato? – Myster
@Myster controllare che System.ComponentModel.DataAnnotations.dll sia referenziato nel progetto. – Pablote
Basta usare questo [gist] (https://gist.github.com/JimmyBoh/b7c135820c18a06648a5) (un metodo di estensione) e puoi chiamare p.Validate() –