문제

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");

여기서 Context는 iApplicationContext 또는 Spring.net 패키지의 iobjectFactory 인스턴스입니다.

안부, Matthias.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top