I am trying to validate the fields within an object.I want all the fields to have values, but I am encountering an error when submitting.
System.InvalidOperationException: Could not find property named x on object of type System.Collections.Generic.List`1[[HivrsPlatform.Common.Contracts.Activities.Qwilr.TokenSubstitution, HivrsPlatform.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. at Blazored.FluentValidation.EditContextFluentValidationExtensions.ToFieldIdentifier(EditContext& editContext, String& propertyPath) at Blazored.FluentValidation.EditContextFluentValidationExtensions.ValidateModel(EditContext editContext, ValidationMessageStore messages, IServiceProvider serviceProvider, Boolean disableAssemblyScanning, FluentValidationValidator fluentValidationValidator, IValidator validator) at Blazored.FluentValidation.EditContextFluentValidationExtensions.<AddFluentValidation>b__0.MoveNext()this is the Test.Razor
@using Blazored.FluentValidation@inherits ComponentBase<MudDialog><DialogContent><EditForm EditContext="_editContext" OnValidSubmit="OnValidSubmit"><FluentValidationValidator @ref="_fluentValidationValidator" Validator="_validator" DisableAssemblyScanning="true"/> @{ foreach (var item in _items) { var index = _items.IndexOf(item);<MudGrid><MudItem xs="12" sm="6" md="11"><MudGrid><MudItem xs="12" sm="6" md="6"><MudTextField Label="Key" @bind-Value="item.Key" For="@(() => item.Key)" Variant="Variant.Outlined"/></MudItem><MudItem xs="12" sm="6" md="6"><MudTextField Label="Value" @bind-Value="item.Value" For="@(() => item.Value)" Variant="Variant.Outlined"/></MudItem></MudGrid></MudItem><MudItem xs="12" sm="6" md="1" Style="display: flex; justify-items: end; align-items: center;"> @if (_items.Count > 1) {<MudFab Color="Color.Primary" StartIcon="@Icons.Material.Filled.Remove" Size="Size.Small" OnClick="@(() => OnRemoveClicked(item))"/> } else if (index == _items.Count - 1) {<MudFab Color="Color.Primary" StartIcon="@Icons.Material.Filled.Add" Size="Size.Small" OnClick="OnAddClicked"/> }</MudItem></MudGrid> } @if (_items.Count > 1) {<MudGrid Justify="Justify.FlexEnd"><MudItem xs="12" sm="6" md="1"><MudFab Color="Color.Primary" StartIcon="@Icons.Material.Filled.Add" Size="Size.Small" OnClick="OnAddClicked"/></MudItem></MudGrid> } }</EditForm></DialogContent><DialogActions><MudButton OnClick="OnCancelClicked">Cancel</MudButton><MudButton Color="Color.Primary" OnClick="OnSubmitClicked">Save</MudButton></DialogActions></MudDialog>this is the Test.razor.cs
public partial class Test{ private EditContext _editContext = default!; private Validator_validator = default!; private FluentValidationValidator _fluentValidationValidator = default!; [Parameter] public List<TokenSubstitution> _items { get; set; } = default!; [CascadingParameter] private MudDialogInstance MudDialog { get; set; } = default!; protected override void OnParametersSet() { if (!_items.Any()) { _items.Add(new TokenSubstitution()); } _editContext = new EditContext(this); _validator = new Validator(); } private async Task OnSubmitClicked() { if (!await _fluentValidationValidator.ValidateAsync()) return; await OnValidSubmit(); }}this is the Validator.cs
public class Validator: AbstractValidator<List<TokenSubstitution>>{ public QwilrTokenSubstitutionValidator() { RuleForEach(x => x).SetValidator(new TokenSubstitutionValidator()); }}public class TokenSubstitutionValidator : AbstractValidator<TokenSubstitution>{ public TokenSubstitutionValidator() { RuleFor(x => x.Key) .NotEmpty().WithMessage("Key is required.") .MaximumLength(100).WithMessage("Key cannot exceed 100 characters."); RuleFor(x => x.Value) .NotEmpty().WithMessage("Value is required.") .MaximumLength(500).WithMessage("Value cannot exceed 500 characters."); }}this is the TokenSubstitution.cs
public class TokenSubstitution{ public string Key { get; set; } public string Value { get; set; }}I want all the fields to have values, and show validation message.