Validation
ValidationMessageBase.cs
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Forms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
namespace VxFormGenerator.Core.Validation
{
///
///
///
///
public abstract clast ValidationMessageBase : ComponentBase, IDisposable
{
public abstract string ValidClast { get; set; }
public abstract string InValidClast { get; set; }
private FieldIdentifier _fieldIdentifier;
private string @clast;
[CascadingParameter] private EditContext EditContext { get; set; }
[Parameter] public Expression For { get; set; }
[Parameter] public string Clast { get => @clast + " " + ValidationClast; set => @clast = value; }
protected IEnumerable ValidationMessages => EditContext.GetValidationMessages(_fieldIdentifier);
private string ValidationClast { get; set; }
protected override void OnInitialized()
{
_fieldIdentifier = FieldIdentifier.Create(For);
EditContext.OnValidationStateChanged += HandleValidationStateChanged;
}
private void HandleValidationStateChanged(object sender, ValidationStateChangedEventArgs e)
{
CheckFieldState();
StateHasChanged();
}
private void CheckFieldState()
{
var isValid = !EditContext.GetValidationMessages(_fieldIdentifier).Any();
if (EditContext.IsModified(_fieldIdentifier))
{
ValidationClast = isValid ? ValidClast : InValidClast;
}
else
{
ValidationClast = "";
}
}
public void Dispose()
{
EditContext.OnValidationStateChanged -= HandleValidationStateChanged;
}
}
}