Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swagger MicroElements.swashback.FluentValidation使用命令处理程序模式添加FluentValidationRules_Swagger_Asp.net Core 2.1_Fluentvalidation_Swashbuckle - Fatal编程技术网

Swagger MicroElements.swashback.FluentValidation使用命令处理程序模式添加FluentValidationRules

Swagger 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 => {

正在尝试使用来自的命令处理程序模式使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 =>
            {
                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);
        }
    }