MVC分部视图中的空对象异常
本文关键字:对象 异常 视图 MVC | 更新日期: 2023-09-27 17:49:01
我有一个名为_News的局部视图,当它被自己调用时,它会像预期的那样工作。
当我使用下面的代码从另一个视图调用它时:
<div>
@html.Partial("_News");
</div>
抛出以下错误:
Object reference not set to an instance of an object
视图中的这行代码:
@foreach (var item in Model) {
视图引用模型的地方。我意识到这意味着视图没有从控制器传递模型,但我很困惑为什么。
控制器名为NewsController,位于Controllers中。视图名为_News,位于共享视图中。调用分部视图的视图是默认的主页/索引页。
如果您的部分需要访问模型中的数据,则需要将模型传递给Partial()
方法:
@Html.Partial("_News", Model)
MSDN: http://msdn.microsoft.com/en-us/library/system.web.mvc.html.partialextensions.partial%28v=vs.108%29.aspx
编辑:根据你下面的评论,我认为你实际上是在这个之后:http://haacked.com/archive/2009/11/17/aspnetmvc2-render-action.aspx -这让你调用一个控制器动作,并将结果呈现到当前视图
你的局部模型可以是你的主视图模型的子集或属性吗?我说could是因为,按照Tieson的观点,你几乎可以处理局部想要的模型和视图想要的模型之间的任何差异。但是,如果你的部分想要的模型与你的视图想要的模型相去甚远,那么我通常会认为这可能是我的两个模型没有彻底/正确地冲洗出来的气味(基本上:"我是否试图在同一页面上表示太多事物或不相关的事物?")。
另外,如果你可以让你的局部模型成为主视图模型的属性,这样你就可以像这样把模型传递给局部:
@Html.Partial("_News", Model.SomePropertyThatFulfillsTheDataSourceOfThePartial)
,那么当您需要提交表单时,这也将使模型绑定更加容易。