Asp.net mvc 客户端上嵌套属性的FluentValidation

Asp.net mvc 客户端上嵌套属性的FluentValidation,asp.net-mvc,validation,fluentvalidation,client-side-validation,Asp.net Mvc,Validation,Fluentvalidation,Client Side Validation,我有这些模型: public class AssignmentTaskModel { public AssignmentTaskModel() { } public AssignmentTaskModel(WorkOrderTaskDto task) { Task = task; } public WorkOrderTaskDto Task { get; set; }

我有这些模型:

public class AssignmentTaskModel 
    {
        public AssignmentTaskModel() { }

        public AssignmentTaskModel(WorkOrderTaskDto task)  
        {
            Task = task;
        }

        public WorkOrderTaskDto Task { get; set; }
    }

public class AssignmentTaskModelValidator : AbstractValidator<AssignmentTaskModel>
{
    public AssignmentTaskModelValidator()
    {
        RuleFor(x => x.Dto).Configure(x => x.ClearValidators());

        RuleFor(x => x.Dto.Id).NotEmpty();
        RuleFor(x => x.Dto.Employee.Id).NotEmpty();
        RuleFor(x => x.Dto.EventDate).NotEmpty();
    }
}
公共类分配任务模型
{
公共AssignmentTaskModel(){}
公共分配任务模型(WorkOrderTaskTo任务)
{
任务=任务;
}
公共WorkOrderTask任务{get;set;}
}
公共类AssignmentTaskModelValidator:AbstractValidator
{
公共分配TaskModelValidator()
{
RuleFor(x=>x.Dto).Configure(x=>x.ClearValidators());
RuleFor(x=>x.Dto.Id).NotEmpty();
RuleFor(x=>x.Dto.Employee.Id).NotEmpty();
RuleFor(x=>x.Dto.EventDate).NotEmpty();
}
}
WorkOrderTaskDto包含很多字段,我有一个单独的验证器。我只希望AssignmentTask中需要的Employee.Id和EventDate,而不是WorkorderTask中的其他人,这就是为什么我在第一行清除验证器

基本上,它工作得很好,但只在服务器端。在我看来,Fluent只为非嵌套字段生成客户端验证属性。是否可以对
RuleFor(x=>x.Dto.Employee.Id).NotEmpty()进行客户端验证


不幸的是,我无法为WorkOrderTaskTo和SetValidator()创建不同的验证器,因为在本例中,我将在IoC FluentValidation factory中得到一个关于重复类型的异常

不幸的是,FluentAPI只生成DbEntityValidationException异常。因此,如果要在客户端设置NotEmpty(Required)约束,必须使用DataAnnotation将其放在模型上,如下面的示例所示

[Required]
public DateTime EventDate { get; set; }

希望这对您有所帮助:)

谢谢您的回复。不幸的是,我不能使用它,因为:1)我的Dto类位于单独的程序集中,我不想向它们添加任何验证属性。2) 我在几个模型中使用WorkOrderTaskDto,其中一个模型中只需要EventDate。