FluentValidation과 Ninject를 사용하고 있습니다.FluentValidation + Ninject : 의존성 주입을 위해 AbstractValidator를 설정하는 방법
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);
}
private static void RegisterServices(IKernel kernel)
{
AssemblyScanner.FindValidatorsInAssembly(Assembly.GetExecutingAssembly())
.ForEach(match => kernel.Bind(match.InterfaceType)
.To(match.ValidatorType));
kernel.Bind<IUserService>().To<UserService>();
}
NinjectWebCommon.cs
에서 내 global.asax.cs에서
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;
});
}
}
을 : 나는 AbstractValidator
[Validator(typeof(CompetitionFormModelValidator))]
public class CompetitionFormModel
{
public string FirstName { get; set; }
}
에 내 유효성 검사를 위해 서비스를 주입하는 것을 시도하고있다
프로젝트 compi 레는 괜찮아. DI를 사용하려고하지 않을 때 유효성 검사도 잘 작동했습니다. 이제 IUserService를 주입하려고 했으므로 유효성 검사가 호출되지 않습니다.
ninject.web.mvc.fluentvalidation의 구성을 올바르게 설정 했습니까? 어떤 도움이라도 대단히 감사하겠습니다.