Soy nuevo con la anotación de datos. Me gustaría saber si es posible (y cómo) agregar alguna validación de forma dinámica. Es muy extenso explicar por qué, pero tengo un ViewModel que recibe y se opone cuando se crea. En ese objeto debo verificar algunas propiedades y dependiendo de su valor debería tener o no algunas validaciones.ASP.NET MVC 3 Anotación de datos: Agregar validación dinámicamente
Un ejemplo:
public class ProfileViewModel
{
[Required(ErrorMessage = "The field {0} is required")]
[Display(Name = "Client Code")]
public int ClientCode { get; set; }
[Required(ErrorMessage = "The field {0} is required")]
[StringLength(100, ErrorMessage = "The field {0} must have up to 100 characters.")]
[Display(Name = "Company")]
public string Company { get; set; }
[StringLength(50, ErrorMessage = "The field {0} must have up to 50 characters.")]
[Display(Name = "Name")]
public string Name { get; set; }
[StringLength(50, ErrorMessage = "The field {0} must have up to 50 characters.")]
[Display(Name = "LastName")]
public string LastName { get; set; }
public ProfileViewModel(User usr)
{
if (usuario.ClientCode != null)
{
ClientCode = Convert.ToInt32(usr.ClientCode);
}
else
{
//ClientCode and Company are not yet required.
//Name and LastName are now required.
}
Company = usr.Company;
Name = usr.Name;
LastName = usr.LastName;
}
}
El problema es que esto no suma del lado del cliente. Por lo tanto, si ya está utilizando la validación del lado del cliente en función de los atributos, esto ocasiona una experiencia de usuario incoherente. MS lo tiene todo mal atar la validación de los atributos. – xr280xr
Tienes razón. Esto no agrega validación del lado del cliente. Si lo necesita, creo que la mejor manera sería escribir su propia secuencia de comandos para agregar esta validación. – Diego