Aller au contenu principal

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.

OrderEditPage.razor
<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>
OrderEditPage.razor.cs
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.

CustomerEditPage.razor.cs
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; }
}
}
Affichage des erreurs

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.

NomTypeDéfautDéclaré dansDescription
TitlestringnullLgValidatorTitre du message d'erreur affiché dans le toastr (message générique par défaut).
CssClassstringnullLgValidationBaseClasses CSS additionnelles.
Paramètres en cascade

LgValidator consomme le EditContext et la configuration d'affichage des erreurs (LgEditFormConfiguration) fournis par le LgEditForm parent.

Méthodes & événements​

MembreSignatureDescription
HasErrorbooltrue si au moins une erreur est en attente d'affichage.
AddErrorvoid AddError(string fieldName, string errorMessage)Ajoute un message d'erreur (texte ou clé de dictionnaire) pour un champ.
AddErrorListvoid AddErrorList(Dictionary<string, List<string>> errors)Ajoute un ensemble d'erreurs « champ → messages ».
SetErrorListvoid SetErrorList(Dictionary<string, List<string>> errors)Remplace les erreurs courantes par l'ensemble fourni.
ThrowPendingErrorsvoid ThrowPendingErrors(bool showInToastr = true)Rattache les erreurs en attente aux champs et les affiche (toastr optionnel).
ClearErrorsvoid 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é au Dico.xml du projet qui possède le message.
Référence complète

Tous les paramètres : Référence API — LgValidator.

Composants liés​

  • LgEditForm — formulaire d'édition qui fournit le EditContext.