LgValidator
LgValidator permet d'ajouter des erreurs de validation personnalisées
(règles métier, erreurs renvoyées par le serveur…) à un
LgEditForm, champ par champ. Les erreurs sont rattachées
au EditContext du formulaire : elles s'affichent sous les champs concernés
et dans le toastr, selon les options d'affichage du formulaire.
<LgEditForm Model="_model" OnValidSubmit="OnValidSubmitAsync">
<LgValidator @ref="_validator" />
...
</LgEditForm>
- Espace de noms :
Lagoon.UI.Components - Hérite de :
LgValidationBase→LgComponentBase - Package NuGet :
Lagoon.UI
Le composant doit être placé dans un formulaire (il exige le paramètre en
cascade EditContext, fourni par LgEditForm) ; sinon une exception est
levée à l'initialisation.
Utilisation
Ajouter des erreurs métier à la soumission
Récupérez le composant avec @ref, ajoutez les erreurs avec AddError
(nom du champ + message ou clé de dictionnaire), puis appelez
ThrowPendingErrors() pour les afficher.
<LgEditForm Model="_model" OnValidSubmit="OnValidSubmitAsync">
<LgValidator @ref="_validator" Title="#OrderValidationErrors" />
<LgTextBox Label="#Reference" @bind-Value="_model.Reference" />
<LgDateBox Label="#DeliveryDate" @bind-Value="_model.DeliveryDate" />
<LgButton Text="#Save" IsSubmit="true" />
</LgEditForm>
public partial class OrderEditPage : LgPage
{
// Référence du validateur : permet d'ajouter des erreurs métier au formulaire.
private LgValidator _validator;
private readonly OrderVm _model = new();
// Déclenché quand les DataAnnotations sont valides : applique ensuite les règles métier.
private Task OnValidSubmitAsync(EditContext editContext)
{
_validator.ClearErrors();
if (_model.DeliveryDate < DateTime.Today)
{
_validator.AddError(nameof(OrderVm.DeliveryDate), "#DeliveryDateInPast");
}
if (_validator.HasError)
{
_validator.ThrowPendingErrors();
return Task.CompletedTask;
}
ShowSuccess("#OrderSaved");
return Task.CompletedTask;
}
private sealed class OrderVm
{
public string Reference { get; set; }
public DateTime? DeliveryDate { get; set; }
}
}
Afficher des erreurs renvoyées par le serveur
SetErrorList remplace la liste d'erreurs par un dictionnaire
« champ → messages » (par exemple désérialisé d'une réponse d'API) ;
AddErrorList les ajoute aux erreurs existantes.
public partial class CustomerEditPage : LgPage
{
private LgValidator _validator;
private readonly CustomerVm _model = new();
// Envoie le modèle au serveur et affiche les erreurs de validation renvoyées, champ par champ.
private async Task OnValidSubmitAsync(EditContext editContext)
{
Dictionary<string, List<string>> serverErrors = await SaveAsync(_model);
if (serverErrors.Count > 0)
{
_validator.SetErrorList(serverErrors);
_validator.ThrowPendingErrors();
return;
}
ShowSuccess("#CustomerSaved");
}
private static Task<Dictionary<string, List<string>>> SaveAsync(CustomerVm model)
{
return Task.FromResult(new Dictionary<string, List<string>>());
}
private sealed class CustomerVm
{
public string Name { get; set; }
}
}
Le mode d'affichage (message sous le champ, résumé en tête de formulaire,
toastr générique ou détaillé) vient des options du LgEditForm parent ou, à
défaut, de la configuration de comportement de l'application
(EditFormErrorsDisplayOptions). Le résumé en tête de formulaire est rendu
par LgValidationSummary, ajouté automatiquement par LgEditForm — vous
n'avez pas à le déclarer vous-même.
Propriétés
Toutes les propriétés [Parameter] du composant, y compris celles héritées.
| Nom | Type | Défaut | Déclaré dans | Description |
|---|---|---|---|---|
Title | string | null | LgValidator | Titre du message d'erreur affiché dans le toastr (message générique par défaut). |
CssClass | string | null | LgValidationBase | Classes CSS additionnelles. |
LgValidator consomme le EditContext et la configuration d'affichage des
erreurs (LgEditFormConfiguration) fournis par le LgEditForm parent.
Méthodes & événements
| Membre | Signature | Description |
|---|---|---|
HasError | bool | true si au moins une erreur est en attente d'affichage. |
AddError | void AddError(string fieldName, string errorMessage) | Ajoute un message d'erreur (texte ou clé de dictionnaire) pour un champ. |
AddErrorList | void AddErrorList(Dictionary<string, List<string>> errors) | Ajoute un ensemble d'erreurs « champ → messages ». |
SetErrorList | void SetErrorList(Dictionary<string, List<string>> errors) | Remplace les erreurs courantes par l'ensemble fourni. |
ThrowPendingErrors | void ThrowPendingErrors(bool showInToastr = true) | Rattache les erreurs en attente aux champs et les affiche (toastr optionnel). |
ClearErrors | void ClearErrors() | Efface toutes les erreurs. |
Bonnes pratiques / accessibilité
- Appelez
ClearErrors()en début de traitement avant d'ajouter les erreurs du nouveau passage de validation. - Utilisez
nameof(...)pour le nom du champ : il doit correspondre au nom de la propriété liée pour que le message s'affiche sous le bon champ. - Les messages acceptent les clés de dictionnaire (
#MaCle) : ajoutez la clé auDico.xmldu projet qui possède le message.
Tous les paramètres : Référence API — LgValidator.
Composants liés
LgEditForm— formulaire d'édition qui fournit leEditContext.