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を介してオブジェクトを取得します。つまり、すべての依存関係を探してオブジェクトに貼り付け、すべてが正常に機能することを意味します。
2番目の例では、Spring.NETを忘れて、クラスの通常のインスタンスを作成するだけです。
バインダーを登録する行は次のようになります。
System.Web.Mvc.ModelBinders.Binders[typeof(App.Shared.DO.Gig)] = context.GetObject("GigModelBinder");
contextは、Spring.NETパッケージのIApplicationContextまたはIObjectFactoryインスタンスです。
よろしく、 マティアス。
所属していません StackOverflow