我在Application.Contracts项目中的ItemDto类上进行了Fluent验证,然后在Application.Services中进行了Fluent验证。我有一个API方法,用于接收ItemDto,然后我从swagger中调用此方法,我希望Fluent验证在请求发送到服务器之前触发,就像我在使用数据注解时从swagger中调用API方法,但未发送必填字段,然后swagger在请求发送到服务器之前返回所需的验证消息一样。
我使用的是abp框架
public class ItemDtoValidator:AbstractValidator<ItemDto>
{
public ItemDtoValidator()
{
RuleFor(x => x.Name).NotEmpty();
RuleFor(x => x.price).NotNull();
RuleFor(x => x.Quantity).NotNull();
}
}
,然后在Application.Contracts模块中添加了typeof(AbpFluentValidationModule)和
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddScoped<IValidator<ItemDto>, ItemDtoValidator>();
}
我的服务中的服务已添加
public async Task<ItemResponseDto> AddItemAsync(ItemDto item)
{
// buisness code to add item
}
1条答案
按热度按时间whitzsjs1#
你必须使用
RuleFor(x => x.Name).NotNull()
,其他属性也是如此。它还取决于数据类型的默认值,例如int
是0
,所以在这种情况下你需要检查0。