Swagger MicroElements.swashback.FluentValidation使用命令处理程序模式添加FluentValidationRules
正在尝试使用来自的命令处理程序模式使MicroElements.Swashbuckle.FluentValidation工作 使用ASP.NETCore2.2 MicroElements.Swashback.FluentValidation v3.0.0-alpha.1(作为组件而非包装参考) Swashback.AspNetCore 5.0.0-rc2 这是Startup.csSwagger MicroElements.swashback.FluentValidation使用命令处理程序模式添加FluentValidationRules,swagger,asp.net-core-2.1,fluentvalidation,swashbuckle,Swagger,Asp.net Core 2.1,Fluentvalidation,Swashbuckle,正在尝试使用来自的命令处理程序模式使MicroElements.Swashbuckle.FluentValidation工作 使用ASP.NETCore2.2 MicroElements.Swashback.FluentValidation v3.0.0-alpha.1(作为组件而非包装参考) Swashback.AspNetCore 5.0.0-rc2 这是Startup.cs return services.AddSwaggerGen(setup => {
return services.AddSwaggerGen(setup =>
{
setup.AddFluentValidationRules();
});
使用fluent验证
这不会将Fluent验证提取到请求主体对象的模式中
public class AddModelsCommandValidator : AbstractValidator<AddModelsCommand>
{
public AddModelsCommandValidator()
{
//1. validate request
RuleFor(e => e.Model).InvalidRequestValidation();
When(x => x.Model != null, () =>
{
//2. validate request body
RuleFor(e => e.Model.ModelCode).StringRequiredValidation();
RuleFor(e => e.Model.ModelCode).StringMaxLengthValidation(5);
RuleFor(e => e.Model.ProgramName).StringRequiredValidation();
RuleFor(e => e.Model.ProgramName).StringMaxLengthValidation(50);
});
}
}
public class AddModelsCommand : IRequest<AddModelsCommandResult>
{
public Model Model { get; }
public AddModelsCommand(Model model)
{
Model = model;
}
}
public class Model
{
/// <summary>
/// Unique code of the Model
/// </summary>
public string ModelCode { get; set; }
/// <summary>
/// The name of the Program
/// </summary>
public string ProgramName { get; set; }
}
public类AddModelsCommandValidator:AbstractValidator
{
公共AddModelsCommandValidator()
{
//1.验证请求
RuleFor(e=>e.Model).InvalidRequestValidation();
当(x=>x.Model!=null,()=>
{
//2.验证请求正文
RuleFor(e=>e.Model.ModelCode).StringRequiredValidation();
RuleFor(e=>e.Model.ModelCode).StringMaxLengthValidation(5);
RuleFor(e=>e.Model.ProgramName).StringRequiredValidation();
RuleFor(e=>e.Model.ProgramName).StringMaxLengthValidation(50);
});
}
}
公共类addModels命令:IRequest
{
公共模型模型{get;}
公共AddModelsCommand(模型)
{
模型=模型;
}
}
公共类模型
{
///
///模型的唯一代码
///
公共字符串模型代码{get;set;}
///
///程序的名称
///
公共字符串程序名{get;set;}
}
以下代码将Fluent验证提取到请求主体对象的模式中。(因为1.AbstractValidator在模型上而不是命令上,2.我已经删除了条件When()验证)
public类AddModelsCommandValidator:AbstractValidator
{
公共AddModelsCommandValidator()
{
//2.验证请求正文
RuleFor(e=>e.ModelCode).StringRequiredValidation();
规则(e=>e.ModelCode).StringMaxLengthValidation(5);
RuleFor(e=>e.ProgramName).StringRequiredValidation();
规则(e=>e.ProgramName).StringMaxLengthValidation(50);
}
}
是否有方法调用AddFluentValidationRules并同时使用命令处理程序模式?这里的问题是必须使用
AbstractValidator
。。
AbstractValidator没有真正意义
public class AddModelsCommandValidator : AbstractValidator<Model>
{
public AddModelsCommandValidator()
{
//2. validate request body
RuleFor(e => e.ModelCode).StringRequiredValidation();
RuleFor(e => e.ModelCode).StringMaxLengthValidation(5);
RuleFor(e => e.ProgramName).StringRequiredValidation();
RuleFor(e => e.ProgramName).StringMaxLengthValidation(50);
}
}