我正在开发一个MVC 4 C#互联网应用程序。
我有一个MapLocationCompany类和一个MapLocation类。我在每个MapLocationCompany对象之后都有一个MapLocation对象列表。
这是我目前的代码:
public class MapLocationCompany
{
public List<MapLocation> MapLocationList { get; set; }
}
在数据库中创建MapLocationCompany后,我希望将MapLocation对象添加到此MapLocationCompany。
在将任何MapLocation项添加到MapLocationCompany之前,我要求MapLocationList。
这是我的代码:
public IEnumerable<MapLocation> getMapLocationsForCompany(int id)
{
MapLocationCompany mapLocationCompany = getMapLocationCompany(id);
return mapLocationCompany.MapLocationList.ToList();
}
我收到此错误:
System.ArgumentNullException was unhandled by user code
Value cannot be null
答案 0 :(得分:2)
在类的构造函数中添加内部列表的初始化
public class MapLocationCompany
{
[Key]
public int id { get; set; }
[HiddenInputAttribute]
public string UserName { get; set; }
public string CompanyName { get; set; }
public double MapStartupLatitude { get; set; }
public double MapStartupLongitude { get; set; }
public int MapInitialZoomIn { get; set; }
public List<MapLocation> MapLocationList { get; set; }
public void MapLocationCompany()
{
MapLocationList = new List<MapLocation>();
}
}
我们无法看到getMapLocationCompany(id);
中的代码是什么,但我认为它以某种方式创建了类MapLocationCompany
的实例并返回此实例。但是在默认情况下,这个新实例的属性MapLocationList设置为null,因此,如果您尝试使用该属性(.ToList()
),则会得到Null Reference Exception。将上面的代码添加到构造函数有助于避免此问题。 List仍然是空的,您需要填充它,但保持列表的内部变量已初始化,您可以使用它来添加新元素。
作为最后一点,错误是由您对ToList()的引用引起的,但MapLocationList
已经被定义为List,因此您可以删除它。
答案 1 :(得分:0)
请在调用ToList()方法之前检查NULL。以下是修改后的代码
public IEnumerable<MapLocation> getMapLocationsForCompany(int id)
{
MapLocationCompany mapLocationCompany = getMapLocationCompany(id);
if(mapLocationCompany.MapLocationList == null)
{
mapLocationCompany.MapLocationList = new List<MapLocation>();
}
return mapLocationCompany.MapLocationList;
}