Nhibernate, MVC و ModelBinders
-
03-07-2019 - |
سؤال
أريد لتكوين نموذج المجلدات مع 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 الحزمة.
أطيب التحيات ، ماتياس.