在Fluent验证API

时间:2016-09-15 13:44:12

标签: asp.net-mvc api validation fluent

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的必填字段验证。

非常感谢任何帮助。 提前谢谢。

0 个答案:

没有答案