ASP.NET MVC局部视图帮助

ASP.NET MVC局部视图帮助

问题描述:

我在我的asp.net mvc解决方案中创建了一个局部视图,它将显示数据库中的项目列表。不过,我收到一个错误消息:Object reference not set to an instance of an object.ASP.NET MVC局部视图帮助

我不确定为什么会发生这种情况,因为就我而言,一切都很好。项目列表是通过VenuesController进行控制的场所,但部分视图位于/ shared /文件夹内,而不是视图的/场馆/文件夹,因此asp.net抱怨是因为它没有将两者连接在一起?

这是我在我的VenuesController代码:

// 
// GET: /Venues/ 

public ActionResult Index() 
{ 
    return View(_repository.ListAll()); 
} 

public ActionResult VenuesList() 
{ 
    return PartialView("VenuesList",_repository.ListAll()); 
} 

指数()工作正常,并显示/Views/Venues/Index.aspx但VenuesList()数据引发错误:/

谢谢。

+0

如果找不到视图,您将不会收到对象引用异常。您是否在控制器操作中设置了一个断点,以查看是否有任何问题。当没有找到视图时,您将看到如下错误: - 未找到视图'索引'或其主人。搜索以下位置: 〜/ Views/Search/Index.aspx 〜/ Views/Search/Index.ascx 〜/ Views/Shared/Index.aspx 〜/ Views/Shared/Index.ascx Description:An在执行当前Web请求期间发生未处理的异常。 – WorldIsRound 2011-03-24 19:16:50

你提到的错误消息:

Object reference not set to an instance of an object. 

在集合的属性被引用,这是典型的空交易。您可能想确保项目列表是:

  • 不为空。
  • 正确实例化。

任何来自控制器端的东西的代码都可能使这个更易于理解。

更新:

我不能完全知道什么是地点模型的样子,但两件事情可以在这里发生。

  • 在构造函数中的地点(应该从你的资料库来传递的列表), 地点的内部列表属性从未正在添加 项目之前实例化。

  • 存储库没有返回任何值。

显示Venue类及其构造函数的其他代码可能会有帮助。

+0

如果控制器位于/ Views/Shared /文件夹内,哪个控制器可以使用局部视图? – Cameron 2011-03-24 19:11:48

+0

您是否将模型传递给部分视图?无论是填充视图的模型,还是构建视图的操作都会很有帮助。 – 2011-03-24 19:13:12

+0

是的,我将模型传递到视图中,如下所示:'>”%> '但是我不知道我将使用哪个控制器作为视图在共享文件夹中,而不是场地文件夹,所以我的动作应该在哪个控制器中? – Cameron 2011-03-24 19:15:57

确保模型中您在局部视图中引用的任何属性不为null。我有类似的情况,其中传递到部分视图的模型有一些空字段,当呈现时,抛出NullReferenceExceptions。

例如像

<%: Model.Property %> 

或者,尤其是:

<%: Model.Property.ChildProperty %> 

也就是说,如果 “属性” 为空,然后试图访问 “ChildProperty” 将抛出一个异常NulLReference。