我的MVC视图包含以下代码 -
@foreach (var d in Model.ItineraryDays)
{
<tr>
<td>
@Html.DisplayFor(model => d.DayPlus1)
</td>
<td>
@Html.ActionLink(d.Listing.Name, "Details", "Port", new { Id = d.ListingId }, null)
</td>
<td>
@if (d.Listing.Port.Country != null)
{
@Html.ActionLink(d.Listing.Port.Country.Name, "Details", "Country", new { Id = d.Listing.Port.Country.Id }, null)
}
</td>
当(d.Listing.Port.Country!= null)遇到空值时,它返回一个未设置为对象实例的&#39; Object引用。&#39;异常。
Port和Country都是延迟加载属性。如果&#39;国家&#39; != mull,然后&#39; Port&#39;必须有一个条目。 (并非所有列表都在Port中有一个条目,因此进行空检查。)
我的做法出了点问题,不确定是什么!
问候,盖伊
附录:存储库代码:
public Itinerary GetItineraryFromId(int Id)
{
var itinerary = context.Itineraries
.Include(i => i.ItineraryDays)
.Include(i => i.ItineraryStartDates)
.Where(i => i.Id == Id).FirstOrDefault();
return(itinerary);
}
答案 0 :(得分:0)
由于Port和Country都是延迟加载的,您需要在端口级别开始条件检查
@if (d.Listing.Port != null) {
if (d.Listing.Port.Country != null) {
... Do Something
}
} else {
... Handle null scenario
}