Nancyfx, Ninject and Fluent Validation



我正在使用Nancyfx,Ninject和FluentValidation来服务器angularjs驱动的网站。一切正常,直到我添加了流畅的验证。

这是(在我看来)重要的代码:

public class WebServerModule : NinjectModule {
    public override void Load() {
        Bind<IModelValidatorFactory>().To<FluentValidationValidatorFactory>().InSingletonScope();
    }
}
public class PersonValidator : AbstractValidator<Person> {
    public PersonValidator() {
        RuleFor(p => p.UserNumber).NotEmpty();
    }
}
protected virtual dynamic HandlePost(dynamic parameters) {
    try {
        TEntity e = this.BindAndValidate<TEntity>();
        var table = TableForType<TEntity>();
        table.Insert(e);
        return HttpStatusCode.Accepted;
    } catch (Exception ex) {
        return HttpStatusCode.BadRequest;
    }
}

每次我在棱角侧调用 post 时,都会在行上抛出 System.ArgumentException:"TEntity e = this。BindAndValidate();"消息文本为:"已添加具有相同键的项目。

你能帮我解决这个问题吗?

此致敬意

迈克尔

IModelValidatorFactory 由 Nancy 从 v0.12 自动连接(请参阅此处 使用 Fluent 验证配置 NancyFx) - 你只需要连接你的验证器。

这适用于南希 0.23

using FluentValidation;
using Ninject.Extensions.Conventions;
using Ninject.Modules;
public class ValidatorModule : NinjectModule
{
    public override void Load()
    {
        this.Kernel.Bind(
            x =>
            x.FromAssembliesMatching("YourNameSpace.*")
             .SelectAllClasses()
             .InheritedFrom<IValidator>()
             .BindAllInterfaces());
    }
}

最新更新