Вопрос

Я хочу настроить привязки моей модели с помощью Nhibernate:

Так что я:

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

У меня есть атрибут, который отмечает действия контроллера, чтобы они использовали правильную привязку модели, т.е.

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

Это работает нормально, и в мой GigModelBinder добавлены правильные VenueManger и ArtistManager.

Однако если в Пуск приложения добавляю:

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

и в действии контроллера используйте:

UpdateModel<Gig>(gig);

например:

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

        UpdateModel<Gig>(gig);

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

VenueManger и ArtistManager НЕ были добавлены в GigModelBinder.

Есть идеи, что я делаю неправильно?

Это было полезно?

Решение

В первом примере вы используете Spring.NET для получения объекта.Это означает, что он найдет все зависимости и вставит их в ваш объект, и все будет работать хорошо.

Во втором примере вы вообще забываете о Spring.NET и просто создаете обычный экземпляр класса.

Строка, в которой вы регистрируете связующее, должна выглядеть так:


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

где контекст — это либо IApplicationContext, либо экземпляр IObjectFactory из пакета Spring.NET.

С уважением, Матиас.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top