Necesito ayuda. Estoy intentando usar un atributo de validación personalizado en un proyecto web ASP.NET MVC que necesita realizar una llamada a la base de datos.Inyección de base de datos en un atributo de validación con ASP MVC y Castle Windsor
Tengo windsor trabajando con éxito para los controladores y la interfaz de IRepository se inyecta normalmente. El problema surge cuando necesito inyectar el repositorio en la clase de atributo.
La clase de atributo tiene el siguiente código:
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;
}
Mi problema es que me parece que no puede hacer Windsor interceptar la contrucción del atributo a pasar en el IArticleRepository
El código actual en mi mundial El archivo .asax es el siguiente:
container = new WindsorContainer();
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(Container));
container
.RegisterControllers(Assembly.GetExecutingAssembly())
.AddComponent<IArticleRepository, ArticleRepository>()
.AddComponent<ValidateUniqueUrlNodeAttribute>();
Cualquier ayuda sería muy apreciada.
Muchas gracias. Opté por el número 1 que satisface mis necesidades perfectamente –