私はFluentValidationとNinjectを使用しています。私はAbstractValidatorFluentValidation + Ninject:依存性注入のためのAbstractValidatorの設定方法
[Validator(typeof(CompetitionFormModelValidator))]
public class CompetitionFormModel
{
public string FirstName { get; set; }
}
、私の検証のためにサービスを注入しようとしています:NinjectWebCommon.cs
private static void RegisterServices(IKernel kernel)
{
AssemblyScanner.FindValidatorsInAssembly(Assembly.GetExecutingAssembly())
.ForEach(match => kernel.Bind(match.InterfaceType)
.To(match.ValidatorType));
kernel.Bind<IUserService>().To<UserService>();
}
で
public class CompetitionFormModelValidator : AbstractValidator<CompetitionFormModel>
{
IUserService UserService;
public CompetitionFormModelValidator(IUserService UserService)
{
this.UserService= UserService;
RuleFor(c => c.FirstName).NotEmpty().WithMessage(" ").Length(1, 100);
Custom(c =>
{
//.. try uusing UserService here
return null;
});
}
}
私global.asax.csで
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
var ninjectValidatorFactory = new NinjectValidatorFactory(new StandardKernel());
ModelValidatorProviders.Providers.Add(new FluentValidationModelValidatorProvider(ninjectValidatorFactory));
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
FluentValidationModelValidatorProvider.Configure(x => x.ValidatorFactory = ninjectValidatorFactory);
}
プロジェクトcompi丁度良い。私がDIを使用しようとしていない時、検証はうまくいっていました。 IUserServiceを注入しようとしているので、検証は呼び出されません。
ninject.web.mvc.fluentvalidationの設定を正しく設定しましたか?どんな助けでも大歓迎です。