使用 Blazored.fluentValidator 在 Blazor 中使用一个 Editform 验证模型列表
Validate List of model with one Editform in Blazor with Blazored.fluentValidator
我有一个变形列表的 Editform,我想验证每个模型的每个字段。
我正在使用 Fluentvalidator 和 Blazor。
用例:
所以逻辑是当我点击 handlesubmit 时,我列表中的所有模型都需要使用 fluentvalidator 进行验证。
我不明白的是我如何制作一个 editform 将通过一次提交验证所有模型,Editform 模型仅指向一个特定模型而不是列表中的模型
这是我的编辑表单:
<EditForm Model="@Model" OnValidSubmit="@HandleSubmitModel">
<FluentValidationValidator @ref="fluentValidationValidator"/>
<div class="ModelContainer">
@foreach (var _model in _Models)
{
<div class="Model-Item">
<ModelComponent @key="_Models.IndexOf(_model)" Model="_model"
Remove="RemoveModel"/>
</div>
}
</div>
</EditForm>`
这是我的 startup.cs:
services.AddTransient<IValidator<Model>, ModelValidator>();
这是我的 ModelValidator.cs:
public class ModelValidator: AbstractValidator<Model>
{
public ModelValidator()
{
RuleFor(x => x.RegistrationNumber).NotEmpty();
RuleFor(x => x.Email).NotEmpty();
RuleFor(x => x.Capacity).GreaterThan(v => 0);
}
}
为包含列表的外部模型添加一个验证器,然后使用 RuleForEach 验证每个内部模型:
public class OuterModel
{
public List<Model> Models { get; set; }
}
public class OuterModelValidator : AbstractValidator<OuterModel>
{
public OuterModelValidator()
{
RuleForEach(r => r.Models).SetValidator(new ModelValidator());
}
}
我有一个变形列表的 Editform,我想验证每个模型的每个字段。
我正在使用 Fluentvalidator 和 Blazor。
用例: 所以逻辑是当我点击 handlesubmit 时,我列表中的所有模型都需要使用 fluentvalidator 进行验证。 我不明白的是我如何制作一个 editform 将通过一次提交验证所有模型,Editform 模型仅指向一个特定模型而不是列表中的模型
这是我的编辑表单:
<EditForm Model="@Model" OnValidSubmit="@HandleSubmitModel">
<FluentValidationValidator @ref="fluentValidationValidator"/>
<div class="ModelContainer">
@foreach (var _model in _Models)
{
<div class="Model-Item">
<ModelComponent @key="_Models.IndexOf(_model)" Model="_model"
Remove="RemoveModel"/>
</div>
}
</div>
</EditForm>`
这是我的 startup.cs:
services.AddTransient<IValidator<Model>, ModelValidator>();
这是我的 ModelValidator.cs:
public class ModelValidator: AbstractValidator<Model>
{
public ModelValidator()
{
RuleFor(x => x.RegistrationNumber).NotEmpty();
RuleFor(x => x.Email).NotEmpty();
RuleFor(x => x.Capacity).GreaterThan(v => 0);
}
}
为包含列表的外部模型添加一个验证器,然后使用 RuleForEach 验证每个内部模型:
public class OuterModel
{
public List<Model> Models { get; set; }
}
public class OuterModelValidator : AbstractValidator<OuterModel>
{
public OuterModelValidator()
{
RuleForEach(r => r.Models).SetValidator(new ModelValidator());
}
}