我正在使用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());
}
}