Pergunta

Eu quero configurar meus ligantes modelo com Nhibernate:

Então, eu tenho:

<object id="GigModelBinder" type="App.ModelBinders.GigModelBinder, App.Web"  singleton="false"  >
<property name="VenueManager" ref="VenueManager"/>
<property name="ArtistManager" ref="ArtistManager"/>

Eu tenho um atributo que acções marcas controlador de forma que eles usam o modelo correto aglutinante ou seja.

[AcceptVerbs("POST")]
    public ActionResult Create([GigBinderAttribute]Gig gig)
    {
        GigManager.Save(gig);
        return View();
    }

Isso funciona bem e meu GigModelBinder tem a VenueManger correta e ArtistManager injetado

No entanto, se na aplicação Start I add:

System.Web.Mvc.ModelBinders.Binders.Add(typeof(App.Shared.DO.Gig), new GigModelBinder());

e em um uso ação do controlador:

UpdateModel<Gig>(gig);

Por exemplo:

[AcceptVerbs("POST")]
    public ActionResult Update(Guid id, FormCollection formCollection)
    {
        Gig gig = GigManager.GetByID(id);

        UpdateModel<Gig>(gig);

        GigManager.Save(gig);
        return View();
    }

O VenueManger e ArtistManager NÃO foi injetado no GigModelBinder.

Todas as idéias que eu estou fazendo errado?

Foi útil?

Solução

No primeiro exemplo você vai via Spring.NET para recuperar o objeto. Isso significa que ele vai olhar para todas as dependências e pau-los em seu objeto e tudo funciona bem.

No segundo exemplo você esquecer Spring.NET o tempo todo e apenas criar uma instância comum de uma classe.

A linha onde você registra sua pasta deve ficar assim:


System.Web.Mvc.ModelBinders.Binders[typeof(App.Shared.DO.Gig)] = context.GetObject("GigModelBinder");

em que contexto é qualquer um ou uma IApplicationContext exemplo IObjectFactory de Spring.NET pacote.

Com os melhores cumprimentos, Matthias.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top