【发布时间】:2017-01-27 12:13:26
【问题描述】:
我有这些模型:
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();
}
}
WorkOrderTaskDto 包含很多字段,我有一个单独的验证器。我只想拥有 AssignmentTask 中需要的 Employee.Id 和 EventDate,而不是 WorkOrderTaskDto 中的其他人,这就是我在第一行清除验证器的原因。
基本上,它运行良好,但仅在服务器端。在我看来,Fluent 仅为非嵌套字段生成客户端验证属性。是否可以对RuleFor(x => x.Dto.Employee.Id).NotEmpty(); 进行客户端验证?
不幸的是,我无法为 WorkOrderTaskDto 和 SetValidator() 创建不同的验证器,因为在这种情况下,我会在 IoC FluentValidation 工厂中遇到关于重复类型的异常。
【问题讨论】:
标签: asp.net-mvc validation fluentvalidation client-side-validation