【发布时间】:2016-11-20 12:15:48
【问题描述】:
当我检查我的ModelState["Email"].Errors 时,我发现相同的验证错误重复了 3 次,而我的所有模型恰好重复了 3 次,我的模型包含超过 3 个属性。
我想知道为什么规则要执行三遍。
我正在使用带有 Autofac 的 MVC 5。我找不到错误!
没有错误,但是如果每个属性都经过 3 次验证,我会担心性能,有些验证很复杂,有时会连接到数据库。
下面是我用来注册Validators、Fluent Validation和Autofac的代码。
builder.RegisterAssemblyTypes(System.Reflection.Assembly.Load("MyAssembly"))
.Where(t => t.Name.EndsWith("Validator"))
.AsImplementedInterfaces()
.InstancePerRequest();
builder.RegisterType<FluentValidationModelValidatorProvider>().As<ModelValidatorProvider>();
builder.RegisterType<AutofacValidatorFactory>().As<IValidatorFactory>().SingleInstance();
Container = builder.Build();// Build !
// FluentValidation wire up to MVC
var fluentValidationModelValidatorProvider = new fluentValidationModelValidatorProvider()
{
AddImplicitRequiredValidator = false,
ValidatorFactory = new AutofacValidatorFactory()
};
//fluentValidationModelValidatorProvider.AddImplicitRequiredValidator = false;
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
ModelValidatorProviders.Providers.Add(fluentValidationModelValidatorProvider);
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(Container);
模型如下所示:
public class ContactInfoDTO
{
public int ID { get; set; }
public string Email { get; set; }
public string Email2 { get; set; }
public string PhoneNumber { get; set; }
public string PhoneNumber2 { get; set; }
public string EmergencyNumber { get; set; }
public string EmergencyPersonName { get; set; }
public ContactInfoDTO()
{
}
}
【问题讨论】:
-
你也可以发布你的模型吗?
-
你在哪里定义你的流利验证?
-
“定义流畅的验证”是什么意思?如果您的意思是第一个代码块,它会在 Global.asax 的 Application_Start() 中执行一次
标签: c# asp.net-mvc validation autofac fluentvalidation