我试图理解为什么有时候我的子对象会消失。
在我的列表视图中,我有标准
<% foreach (var item in Model)
当我检查项目和模型时,我可以看到item.Map有几个元素。
事实上,在我的列表视图中,我可以这样做:
<% foreach (var map in item.Map)
<% Html.RenderPartial("MapView", map); %>
并且MapView可以访问并显示所有属性。我将子对象包括在内:
list = from item in _entities.DataTable
.Include("LookupTable1")
.Include("Map")
.Include("Map.LookupTable2") select item;
return View("List", list);
但如果我尝试这样做:
<%= Html.Encode(item.Map.FirstOrDefault().Field)%>
我得到一个空指针异常,而item.Map有0个元素。
任何人都可以解释为什么会这样吗?
答案 0 :(得分:0)
你可能没有.Include语句。我不确定这是否解决了你的问题,但不知道空指针的原因。
就像注意:在做MVC时,你可能不应该在视图中做Linq查询(比如.FirstOrDefault)。
list = from item in _entities.DataTable
select new
{
Name = item.Name
Maps = item.Maps
};
使用此语法,您可以在控制器中执行更多Linq查询
list = from item in _entities.DataTable
select new
{
Name = item.Name
FirstMap = item.Maps.FirstOrDefault()
};
甚至
list = from item in _entities.DataTable
select new
{
Name = item.Name
Maps = from map in item.Maps
where map = somecondition
select map
};