Fluent API用于在运行时向现有类添加验证。在我们的例子中,我们有WebinarViewmodel,如下所示
public class WebinarViewModel : BaseViewModel
{
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Company { get; set; }
.....
}
因此,如果我们将此FluentAPI用于验证规则,我们需要使用下面这行,并且需要传递包含验证规则的类名(WebinarViewModelValidator)。但是如果我将WebinarViewModelValidator作为属性参数传递,那么这将适用于我使用该类的所有视图。但在我的情况下,我在不同的应用程序中使用相同的ViewModel,它们是相同的解决方案,并且此视图模型位于公共层中。对于每个应用程序,我需要针对同一ViewModel使用不同的验证规则。那么如何在解决方案中为不同的应用程序动态传递不同的Validator类呢?
[FluentValidation.Attributes.Validator(typeof(WebinarViewModelValidator))]
public class WebinarViewModelValidator : AbstractValidator<WebinarViewModel>
{
public WebinarViewModelValidator()
{
RuleFor(m => m.FirstName).NotEmpty().WithMessage("FirstName Can not be empty");
RuleFor(m => m.LastName).NotEmpty().WithMessage("LastName Can not be empty");
RuleFor(m => m.Phone).NotEmpty().WithMessage("Phone Can not be empty");
RuleFor(m => m.Company).NotEmpty().WithMessage("Company Can not be empty");
RuleFor(m => m.JobTitle).NotEmpty().WithMessage("JobTitle Can not be empty");
}
}
例如viewmodel类是WebinarViewModel, 验证器是WebinarViewModelValidator
应用程序1的:我需要在WebinarViewModel类中为FirstName和LastName添加必填字段验证 但 对于应用程序2:我需要在同一个WebinarViewModel类中添加FirstName和Phone的必填字段验证。
非常感谢任何帮助。 提前谢谢。