2010-12-15 33 views
0

我有一個視圖使用RenderAction來渲染另一個視圖 - 它用於一切正常,但我做了一個相當小的重構,並將我的一些模型的屬性移動到抽象基類(我的模型繼承)。模型對象被重新實例化。可能由IoC?

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

如果我把一個斷點在這裏,我可以看到我的模型對象完全填充,但是當一步進去我的模型似乎重新實例 - 與所有的屬性沒有被設置,所以我得到一個很多空引用異常。

RenderAction使我的IoC容器(Castle Windsor)實例化一個MyController的新實例。它是否也出於某種原因實例化我的模型對象?

爲了讓事情更加複雜,當VS向我展示我的例外時,它基本上說「Property X is null」,但是當我看QuickWatch時,它的屬性不爲null。

我想我可能對抽象類有一個錯誤的理解,但如果我將基礎更改爲普通類,我會得到相同的結果。

我正在使用ASP.NET MVC 1.0。

編輯:

而且MyAction返回一個ActionResult - 如果有什麼差別。

+0

@Mauricio - 我不是。我使用XML進行配置 - 它非常標準,並且適用於許多其他依賴項(所有接口,沒有摘要)。 – diarmo 2010-12-15 14:34:47

+1

這看起來像是對RenderAction的誤解。 – 2010-12-15 14:35:55

+0

不,溫莎不會實例化你沒有註冊的東西。 – 2010-12-15 14:37:18

回答

1

RenderAction的對象參數用於路由值,而不是模型。您需要自己在MyAction方法中創建模型。

+0

謝謝。我知道這很愚蠢。有趣的是,傳遞模型用於工作 - 我最好去查看其餘的代碼 - 確保它不在任何地方! – diarmo 2010-12-16 09:20:07