質問

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インスタンスです。

よろしく、 マティアス。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top