将新模型添加到模型属性时出现NullReference错误

时间:2013-10-25 17:33:55

标签: entity-framework asp.net-mvc-4

我有以下实体框架代码的第一个模型:

public class Member {

    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string City { get; set; }
    public String CardNumber { get; set; }

    //Foreign Key
    public virtual ICollection<Favorite> Favorites { get; set; }

    [NotMapped]
    public List<SelectListItem> FavoriteTypes { get; set; }

    public Member() {
        MembersDB db = new MembersDB();

        FavoriteTypes = new List<SelectListItem>();
        FavoriteTypes.AddRange(db.FavoriteTypes.ToList().Select(f => new SelectListItem { Text = f.Value, Value = f.ID.ToString() }));
    }
}

public class FavoriteType {
    public int ID { get; set; }
    public string Value { get; set; }
}

public class Favorite {
    public int ID { get; set; }
    public String Value { get; set; }

    //Foreign Keys
    public virtual FavoriteType FavoriteType { get; set; }
    public virtual Member Member { get; set; }
}

这为FavoriteTypes创建了1-M关系 - &gt;会员的收藏夹和1-M关系 - &gt;收藏夹

在我的控制器操作中,我从几个页面保存的Session中检索大部分会员的信息,除了下面收集的收藏夹信息。然后我收集ID和输入值列表以添加到我的新成员中:

    [HttpPost]
    public ActionResult AddFavs(List<int> ID, List<string> Value) {
        MembersDB db = new MembersDB();
        Member newMember = (Member)Session["member"];
        if (ID != null && Value != null)
        {
            for (int i = 0; i < ID.Count(); i++)
            {
                int currentID = ID[i];
                var test = new Favorite();
                test.FavoriteType = db.FavoriteTypes.Where(f => f.ID == currentID).FirstOrDefault();
                test.Value = Value[i];
                newMember.Favorites.Add(test);                    
            }
        }

运行此代码时,我在此行newMember.Favorites.Add(test);

上收到NullReference错误

不完全确定原因,任何帮助都会受到赞赏。

编辑:在VS中排除故障时,我可以找到的Favorites newMemberMember中的test

1 个答案:

答案 0 :(得分:2)

ICollection<Favorite> Favoritesnull,因此您无法向其中添加项目。您应该在模型的构造函数中实例化它:

public Member()
{
    Favorites = new List<Favorite>();

    // ...
}

现在它是一个空集合,你可以添加项目。