C# 选择列表投掷“;“未设置对象引用”;即使在构造函数中初始化后也会出错
我有以下C# 选择列表投掷“;“未设置对象引用”;即使在构造函数中初始化后也会出错,c#,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我有以下型号 public class UploadImageAlbum { public UploadImageAlbum() { Albums = new SelectList(Enumerable.Empty<SelectListItem>()); } public List<HttpPostedFileBase> Images { get; set; } public string AlbumID { get
型号
public class UploadImageAlbum
{
public UploadImageAlbum()
{
Albums = new SelectList(Enumerable.Empty<SelectListItem>());
}
public List<HttpPostedFileBase> Images { get; set; }
public string AlbumID { get; set; }
public SelectList Albums { get; set; }
}
public class Album
{
public string AlbumID { get; set; }
public string AlbumName { get; set; }
}
public class Repository
{
public static List<Album> FetchAlbums()
{
List<Album> albums = new List<Album>
{
new Album(){ AlbumID = "Album1", AlbumName = "Album 1 desc"},
new Album(){ AlbumID = "Album2", AlbumName = "Album 2 desc"}
};
return albums;
}
}
在Controller
中,我尝试按如下方式填充此模型:
public class AdminViewModel
{
public UploadImageAlbum UIAModel { get; set; }
}
public PartialViewResult GetMediaUploadView()
{
AdminViewModel model = new AdminViewModel();
List<Album> albums = Repository.FetchAlbums();
model.UIAModel.Albums = new SelectList(albums, "AlbumID", "AlbumName");//Error here
//Object reference not set to an instance of the object
return PartialView("_UploadMedia", model);
}
public PartialViewResult GetMediaUploadView()
{
AdminViewModel模型=新的AdminViewModel();
名单
更新
好吧,我不认为这是重复的,因为我太清楚了,有n个问题是基于null reference
,但是我们得到null reference
的水平是这个问题独特的原因。另外,我的印象是,SelectList
抛出错误,结果问题不同在这里租房。因此,我准备回答我的问题您的AdminViewModel
有一处房产:
public class AdminViewModel
{
public UploadImageAlbum UIAModel { get; set; }
}
然后:
您尚未初始化UIAModel,他正在抛出错误
如果您在C#6
中,您可以简单地使用:
public class AdminViewModel
{
public UploadImageAlbum UIAModel { get; set; } = new UploadImageAlbum();
}
快速修复看起来像model.UIAModel
是null
model.UIAModel
看起来像null
对我来说。所以model.UIAModel.Albums
才是真正的错误投射者。试着在UIAModel
的AdminViewModel
构造函数中为UIAModel
@M标题,但如果你读了这个问题,你就不会这么想:)解决方案可能是通用的,有些东西是空的,没有初始化,但它的层次结构是null
,这就是问题的独特之处:)无论如何,我坚持我的观点,希望这对将来的人有所帮助:)快乐的编码:)@GuruprasadRao theduplicate是关于如何准确确定什么是null
,这是您的主要问题。如果您知道它是model.UIAModel
,而不仅仅是model
,那么解决方案应该更加明显。不,我没有使用C#6,所以我也可以在AdminViewModel
构造函数中使用它,对吗?是的,您可以这样做t在您的ctor中,就像您在您的上传图像相册中初始化相册一样。谢谢您的帮助兄弟..编码快乐...)
AdminViewModel model = new AdminViewModel();
//..
model.UIAModel.Albums = //...
public class AdminViewModel
{
public UploadImageAlbum UIAModel { get; set; } = new UploadImageAlbum();
}