Potrzebuję pomocy - Próbuję użyć niestandardowego atrybutu sprawdzania poprawności w projekcie sieci Web ASP.NET MVC, który musi wykonać wywołanie bazy danych.Wstrzykiwanie bazy danych do atrybutu sprawdzania poprawności za pomocą ASP MVC i Castle Windsor
Mam windsor pomyślnie działa dla kontrolerów i interfejs IRepository jest wstrzykiwany normalnie. Problem pojawia się, gdy muszę wstrzyknąć repozytorium do klasy atrybutów.
Klasa atrybut ma następujący kod:
public class ValidateUniqueUrlNodeAttribute : AbstractValidationAttribute
{
private readonly string message;
private readonly IArticleRepository articleRepository;
public ValidateUniqueUrlNodeAttribute(string message)
{
this.message = message;
}
public ValidateUniqueUrlNodeAttribute(string message, IArticleRepository articleRepository):this(message)
{
this.articleRepository = articleRepository;
}
public override IValidator Build()
{
var validator = new UniqueUrlNodeValidator(articleRepository) { ErrorMessage = message };
ConfigureValidatorMessage(validator);
return validator;
}
Moim problemem jest to, że nie wydaje się, aby Windsor przechwycić contruction atrybutu przejść w IArticleRepository
aktualny kod w moim globalny Plik .asax wygląda następująco:
container = new WindsorContainer();
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(Container));
container
.RegisterControllers(Assembly.GetExecutingAssembly())
.AddComponent<IArticleRepository, ArticleRepository>()
.AddComponent<ValidateUniqueUrlNodeAttribute>();
Każda pomoc zostanie bardzo doceniona.
Wielkie dzięki. Wybrałam # 1, który idealnie spełnia moje potrzeby. –