Je suis nouveau avec l'annotation de données. Je voudrais savoir s'il est possible (et comment) d'ajouter de la validation de façon dynamique. Il est très complet pour expliquer pourquoi, mais j'ai un ViewModel qui reçoit et objecte lorsqu'il est créé. Dans cet objet je dois vérifier certaines propriétés et en fonction de sa valeur je devrais avoir ou non des validations.ASP.NET MVC 3 Données Annotation: Ajouter dynamiquement la validation
Un exemple:
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;
}
}
Le problème est, cela n'ajoute pas la validation côté client. Donc, si vous utilisez déjà la validation côté client en fonction des attributs, cela provoque une expérience utilisateur incohérente. MS a eu tout faux en liant la validation aux attributs. – xr280xr
Vous avez raison. Cela n'ajoute pas de validation côté client. Si vous en avez besoin, je crois que le meilleur moyen serait d'écrire votre propre script pour ajouter cette validation. – Diego