2011-06-08 25 views
5

tengo esto:ASP.NET MVC 3: Validación de lista de mensajes get

public class Customer 
{ 
    [DisplayName("Lastname"), StringLength(50)] 
    [Required(ErrorMessage="My Error Message")] 
    [NotEmpty()] 
    public override string LastName { get; set; } 

    [DisplayName("Firstname"), StringLength(50)] 
    [Required(ErrorMessage="My Error Message 2")] 
    [NotEmpty()] 
    public override string FirstName{ get; set; } 
} 

En el controlador, que hacer esto:

if (!TryValidateModel(myCustomer)) 
{ 
    //HERE 
    .... 
} 

Donde "AQUÍ" es, me gustaría llegar todos los mensajes de error

Algunos casos de la muestra:

  1. Si "Apellido" no se encuentra Me gustaría obtener "Mi mensaje de error"
  2. Si ambos están Mising, me gustaría obtener una lista (u otro) con los valores "Mi mensaje de error" y "Mi mensaje de error 2"

Alguna idea?

Gracias,

Respuesta

13

Se puede obtener una lista de todos los errores con su respectivo campo y el mensaje como este:

var errors = ModelState 
    .Where(x => x.Value.Errors.Count > 0) 
    .Select(x => new { x.Key, x.Value.Errors }) 
    .ToArray(); 
+0

No no no quiero todos los mensajes, quiero solo mensaje para el campo por error –

+0

@ Kris-I, eso es lo que obtendrás => ver la cláusula Where. Solo tomará los campos que tengan un error. –

+0

Una vez más gracias :) –

Cuestiones relacionadas