0

RenderActionを使用して別のビューをレンダリングするビューを持っています。すべて正常に動作していましたが、リファクタリングを少ししか行いませんでした。モデルのプロパティのいくつかを抽象基本クラス(私のモデルが継承します)に移動しました。モデルオブジェクトが再インスタンス化されています。おそらくIoCによって?

Html.RenderAction("MyAction","MyController", Model); 

私はここにブレークポイントを置いた場合、私は私のモデルオブジェクトがフルに見ることができます、しかし、私のモデルが再インスタンス化されているようですさらに一歩それに - すべてのプロパティが設定されていないので、私は取得していますと多くのNull参照例外。

RenderActionは、My IoCコンテナ(Castle Windsor)がMyControllerの新しいインスタンスをインスタンス化するようにします。何らかの理由でModelオブジェクトをインスタンス化していますか?

VSが私に私の例外を示すとき、それは本質的に "Property X is null"と表示されますが、QuickWatchのプロパティを見るとnullではありません。

私は抽象クラスを間違って理解している可能性があると考えましたが、ベースを通常のクラスに変更すると同じ結果が得られます。

私はASP.NET MVC 1.0を使用しています。

編集:

もMyActionのActionResultを返す - それはすべての違いになります。

+0

@Mauricio - 私はいません。私はXMLで設定しています。かなりの標準であり、他の多くの依存関係(すべてのインターフェース、要約はありません)のために働いています。 – diarmo

+1

これはRenderActionの誤解のようです。 –

+0

いいえ、ウィンザーはあなたが登録していないことをインスタンス化しません。ありがとう。 –

答えて

1

RenderActionのオブジェクトパラメータは、モデルではなくルート値用です。 MyActionメソッドで自分でモデルを作成する必要があります。

+0

ありがとう。私はそれが何かばかげたことを知っていた。面白いことに、モデルを渡して作業していました。コードの残りの部分を調べてみるとよいでしょう。 – diarmo

関連する問題