Skip to content

Commit

Permalink
Added support for collections of simple types (i.e. List<string>)
Browse files Browse the repository at this point in the history
  • Loading branch information
psampaio committed Nov 25, 2024
1 parent 8afbf82 commit 61ba225
Showing 1 changed file with 19 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -99,13 +99,20 @@ private static async Task ValidateField(EditContext editContext,
if (validator is not null)
{
var validationResults = await validator.ValidateAsync(new ValidationContext<object>(editContext.Model, new PropertyChain(), compositeSelector));
var errorMessages = validationResults.Errors
.Where(validationFailure => validationFailure.PropertyName == propertyPath)
.Select(validationFailure => validationFailure.ErrorMessage)
.Distinct();

List<string> errorMessages = new();
foreach (var validationResult in validationResults.Errors)
{
var newFieldIdentifier = ToFieldIdentifier(editContext, validationResult.PropertyName);
var newPropertyPath = PropertyPathHelper.ToFluentPropertyPath(editContext, newFieldIdentifier);
if (propertyPath == newPropertyPath)
{
errorMessages.Add(validationResult.ErrorMessage);
}
}

messages.Clear(fieldIdentifier);
messages.Add(fieldIdentifier, errorMessages);
messages.Add(fieldIdentifier, errorMessages.Distinct());

editContext.NotifyValidationStateChanged();
}
Expand Down Expand Up @@ -267,6 +274,13 @@ private static FieldIdentifier ToFieldIdentifier(in EditContext editContext, in
nextTokenEnd = propertyPathAsSpan.IndexOfAny(Separators);
if (nextTokenEnd < 0)
{
// It's a collection of simple types
if (propertyPathAsSpan.EndsWith("]"))
{
propertyPathAsSpan = propertyPathAsSpan.Slice(0, propertyPathAsSpan.Length - 1);
return new FieldIdentifier(obj, propertyPathAsSpan.ToString());
}

return new FieldIdentifier(obj, propertyPathAsSpan.ToString());
}
}
Expand Down

0 comments on commit 61ba225

Please sign in to comment.