I use Razor pages and want to specify a rule, when at least one selectItem should be selected for multiply select element.
I have the following rule:
public class MailRangeValidator : AbstractValidator<MailsRangeModel>
{
public MailRangeValidator()
{
RuleFor(x => x.SelectedFolders)
.Must(x => x.Count() > 0)
//.Must(coll => coll.Any(item => !string.IsNullOrWhiteSpace(item)))
.WithMessage("At least one folder should be selected");
}
}
and the following strings in the Program.cs:
builder.Services.AddFluentValidation();
builder.Services.AddTransient<IValidator<MailsRangeModel>, MailRangeValidator>();
property SelectedFolders is declared as:
[BindProperty]
public string[] SelectedFolders { get; set; }
and the following select element:
<select asp-for="SelectedFolders" asp-items="Model.Folders" size="10"></select>
when I don't select any element (leave select as empty), on my OnPostShowDataAsync:
public async Task<IActionResult> OnPostShowDataAsync()
{
if (!ModelState.IsValid)
{
return new PageResult();
}
ModelState.IsValid is true. Why and how to fix it?