我正在使用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: &#34; TEntity e = this.BindAndValidate();&#34; 消息文本为:&#34;已添加具有相同密钥的项目。&#34;
你能帮我解决一下这个问题吗?
祝你好运
迈克尔
答案 0 :(得分:0)
Nancy从v0.12自动连接IModelValidatorFactory(请参阅此处Configure NancyFx with Fluent Validation) - 您只需连接验证器。
这适用于Nancy 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());
}
}