Aller au contenu principal

Validator

Package BeSwarm.Validator

NuGet NuGet

https://github.com/be-swarm/Validator

Ce package permet d'effectuer des validations d'attributs de manière localisée.

Les attributs pris en charge sont les suivants:

  • [Required]
  • [Range]
  • [MaxLength]
  • [MinLength]
  • [StringLength]

Utilisation

Exemple de code:

public class Model{    [Required]    [MaxLength(6)]    public string Name { get; set; }}class Program{    public static async Task Main(string[] args)    {        Model t= new();        ValidateContext context = new ValidateContext(false);        var listvalidationfailure = await Validate.ValidateObject(t, context);        foreach (var item in listvalidationfailure)        {           Console.WriteLine($"*** error **** Field: {item.PropertyName} value={item.Obj} attribute:{item.AttributeType} message:{item.ErrorMessage}");        }        t.Name = "11";        listvalidationfailure = await Validate.ValidateObject(t, context);        foreach (var item in listvalidationfailure)        {            Console.WriteLine($"*** error **** Field: {item.PropertyName} value={item.Obj} attribute:{item.AttributeType} message:{item.ErrorMessage}");        }        t.Name = "LPLOKUAAA";        listvalidationfailure = await Validate.ValidateObject(t, context);        foreach (var item in listvalidationfailure)        {            Console.WriteLine($"*** error **** Field: {item.PropertyName} value={item.Obj} attribute:{item.AttributeType} message:{item.ErrorMessage}");        }        Console.ReadKey();    }}

Vérifier la présence d'un attribut sur une propriété

ex: vérifier si l'attribut [Required] est présent sur la propriété Name de l'instance t


RequiredAttribute? ra=Validate.GetAttributeIfExist<RequiredAttribute>(t, nameof(t.Name));

Utilisation avec Blazor dans un EditForm

EditForm Model="@_model" OnValidSubmit="@SubmitValidForm">
<BeSwarm.Validator.BlazorValidator @ref="_BlazorValidationValidator" ValidateContext="mycontext" />
...
</EditForm>

Gestion de la langue

Par defaut la langue courante est prise en compte. Il est cependant possible de spécifier une langue particulière pour la validation.

    _validatorContext.Culture = new CultureInfo("FR");

Ajouter des Fluent Validation

Il est possible de rajouter des validations de type fluent validation. Ex: Rajout d'une règle fluent

public class FluentValidatorModel : AbstractValidator<Model>
{
public FluentValidatorModel()
{
RuleFor(x => x.Name).NotEmpty().WithMessage("controlled by fluent: not empty");
}
}

puis dans le code:

ValidateContext context = new ValidateContext(false);
context.FluentValidator = new FluentValidatorModel();
var listvalidationfailure = await Validate.ValidateObject(t, context);