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();
}