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()数据引发错误:/
谢谢。
答
你提到的错误消息:
Object reference not set to an instance of an object.
在集合的属性被引用,这是典型的空交易。您可能想确保项目列表是:
- 不为空。
- 正确实例化。
任何来自控制器端的东西的代码都可能使这个更易于理解。
更新:
我不能完全知道什么是地点模型的样子,但两件事情可以在这里发生。
-
在构造函数中的地点(应该从你的资料库来传递的列表), 地点的内部列表属性从未正在添加 项目之前实例化。
或
存储库没有返回任何值。
显示Venue类及其构造函数的其他代码可能会有帮助。
答
确保模型中您在局部视图中引用的任何属性不为null。我有类似的情况,其中传递到部分视图的模型有一些空字段,当呈现时,抛出NullReferenceExceptions。
例如像
<%: Model.Property %>
或者,尤其是:
<%: Model.Property.ChildProperty %>
也就是说,如果 “属性” 为空,然后试图访问 “ChildProperty” 将抛出一个异常NulLReference。
如果找不到视图,您将不会收到对象引用异常。您是否在控制器操作中设置了一个断点,以查看是否有任何问题。当没有找到视图时,您将看到如下错误: - 未找到视图'索引'或其主人。搜索以下位置: 〜/ 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