Frage

Ich möchte mein Modell Bindemittel konfigurieren, um mit Nhibernate:

So habe ich:

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

Ich habe ein Attribut, das Controller-Aktionen markiert, so dass sie verwenden das richtige Modell Bindemittel d.

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

Das funktioniert gut und mein GigModelBinder hat die richtigen VenueManger und ArtistManager injizierte

Allerdings, wenn in Anwendung starte ich hinzufügen:

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

und in einer Controller-Aktion Verwendung:

UpdateModel<Gig>(gig);

Beispiel:

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

        UpdateModel<Gig>(gig);

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

Die VenueManger und ArtistManager nicht in die GigModelBinder injiziert worden ist.

Alle Ideen, was ich falsch mache?

War es hilfreich?

Lösung

Im ersten Beispiel, das Sie über Spring.NET gehen Ihr Objekt abzurufen. Das bedeutet, dass es für alle Abhängigkeiten aussehen wird und kleben Sie sie in Ihr Objekt und alle funktionieren gut.

Im zweiten Beispiel Sie Spring.NET vergessen die ganze Zeit und nur eine gewöhnliche Instanz einer Klasse erstellen.

Die Linie, wo Sie Ihre Bindemittel wie folgt aussehen registrieren sollte:


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

Dabei Kontext entweder eine IApplicationContext oder eine IObjectFactory Instanz von Spring.NET Paket.

Mit freundlichen Grüßen, Matthias.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top