Existe-t-il un moyen d'utiliser des annotations de données pour comparer deux champs de formulaire (par exemple pour confirmer une adresse e-mail) identiques, avant d'autoriser la publication du formulaire?
par exemple. l'annotation de données d'expression régulière peut-elle utiliser la fonction de correspondance pour référencer une autre propriété dans un ViewModel?
Utilisez le CompareAttribute
public string EmailAddress {get; set;}
[Compare(nameof(EmailAddress), ErrorMessage = "Emails mismatch")]
public string VerifiedEmailAddress { get; set; }
Comme une option possible auto-validation:
Implémentez une interface IValidatableObject avec la méthode Validate, où vous pouvez mettre votre code de validation.
public class TestModel : IValidatableObject
{
public string Email{ get; set; }
public string ConfirmEmail { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Email != ConfirmEmail)
{
yield return new ValidationResult("Emails mismatch", new [] { "ConfirmEmail" });
}
}
}
Veuillez noter: il s'agit uniquement d'une validation côté serveur.