2010-12-15 39 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