Créez dynamiquement un contrôle CustomValidator et ajoutez-le directement à la collection Page.Validators.
Dim err As New CustomValidator
err.ValidationGroup = "MyGroup"
err.IsValid = False
err.ErrorMessage = "The password is invalid"
Page.Validators.Add(err)
Contrairement à l'ajout du CustomValidator au balisage, cette méthode vous permet d'ajouter un nombre quelconque de messages d'erreur arbitraires basés sur la logique commerciale côté serveur.
Notez que vous pouvez également l'ajouter directement à la page, mais il y a quelques règles à respecter :
- Vous devez ajouter le contrôle au même conteneur de nommage que les contrôles du groupe de validation.
- Si vous ne voulez pas que le message de validation apparaisse à un endroit aléatoire de la page, vous devrez soit ajouter le validateur à un conteneur spécifique, soit le supprimer à l'aide d'une classe ou d'un style CSS.
Vous pouvez également créer un classe personnalisée et implémenter IValidator qui vous permet d'ajouter le message en une seule ligne de code, mais cette méthode ne prend pas en charge les groupes de validation.
Conformément à la suggestion d'Anders Fjeldstad, voici un ensemble de méthodes d'extension pratiques.
Imports Microsoft.VisualBasic
Imports System.Runtime.CompilerServices
Public Module PageExtensions
<Extension()> _
Public Sub AddValidationError(ByVal p As System.Web.UI.Page, ByVal errorMessage As String)
p.AddValidationError(errorMessage, String.Empty)
End Sub
<Extension()> _
Public Sub AddValidationError(ByVal p As System.Web.UI.Page, ByVal errorMessage As String, ByVal validationGroup As String)
Dim err As New CustomValidator
err.ValidationGroup = validationGroup
err.ErrorMessage = errorMessage
err.IsValid = False
p.Validators.Add(err)
End Sub
End Module