ASP.NET MVC3 Fluent验证构造函数每次请求多次命中

Zor*_*ran 5 ninject fluentvalidation asp.net-mvc-3

我使用流畅的验证和ninject设置了一个ASP.NET MVC3网站.验证码正在运行.但是,我在验证类构造函数中设置了一个断点,我注意到当我请求使用验证的视图时,构造函数会被多次命中.基于非常基本的测试,似乎命中构造函数的次数等于对象上存在的属性数.还有其他人遇到过类似的东西吗?或者有人可以更深入地了解这种类型的验证在幕后如何运作?-谢谢

这是构造函数......

public class PersonValidator : AbstractValidator<Person> {
    public PersonValidator() {
        RuleFor(x => x.Id).NotNull();
        RuleFor(x => x.Name).Length(0, 10);
        RuleFor(x => x.Email).EmailAddress();
        RuleFor(x => x.Age).InclusiveBetween(18, 60);
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是我正在使用的库/资源(我刚刚获得了NuGet包并根据以下两个链接的信息配置了所有内容):

http://fluentvalidation.codeplex.com/wikipage?title=mvc https://github.com/ninject/ninject.web.mvc.fluentvalidation

Zor*_*ran 4

我想出了如何防止这个问题。尽管这解决了我的问题,但我希望其他人提供意见,了解这样做是否会产生任何后果?

因此,在第二个链接上,您将看到有关如何设置 Ninject 的说明。

在第二步中,您需要应用“ InRequestScope() ”扩展方法。那么构造函数只会在每个使用验证器的 http 请求中被命中一次。这显然意味着每个 http 请求只创建一个验证器对象的实例,这对我来说是有意义的。不知道使用这个方案有没有什么后果?

Bind(match.InterfaceType).To(match.ValidatorType).InRequestScope();
Run Code Online (Sandbox Code Playgroud)