【问题标题】:Nancyfx, Ninject and Fluent ValidationNancyfx、Ninject 和 Fluent 验证
【发布时间】:2015-01-20 16:09:24
【问题描述】:

我正在使用 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();” 消息文本是:“已添加具有相同键的项目。”

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

最好的问候

迈克尔

【问题讨论】:

    标签: ninject nancy fluentvalidation


    【解决方案1】:

    Nancy 从 v0.12 开始自动连接 IModelValidatorFactory(请参阅此处 Configure NancyFx with Fluent Validation) - 您只需连接您的验证器。

    这适用于南希 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());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 2012-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多