0

我在MVC 3中构建网站。表之间的关系mvc3

我在现有数据库中首先使用EF代码。

我的模型内部ET看起来像:

public class Pages 
{ 
    [Required] 
    public int ID { get; set; } 

    public int ParentID { get; set; } 

    [Required] 
    public int PageType { get; set; } 

    [Required] 
    [DataType(DataType.Text)] 
    [DisplayName("כותרת")] 
    public string Title { get; set; } 

    public string SearchWords { get; set; } 

    public string Leng { get; set; } 

    public int? Sort { get; set; } 

    public string Modules { get; set; } 

    [ForeignKey("PageType")] 
    public virtual PagesType Type { get; set; } 

    public virtual IEnumerable<PagesType> Types { get; set; } 

    [ForeignKey("PageID")] 
    public ICollection<PageContent> PageContent { get; set; } 

    [ForeignKey("PageID")] 
    public virtual ICollection<ImagesTable> Images { get; set; } 


} 

public class PageContent 
{ 
    public int ID { get; set; } 

    public int PageID { get; set; } 

    public string Header { get; set; } 

    public string Text { get; set; } 

    [ForeignKey("ID")] 
    public virtual ICollection<Pages> Pages { get; set; } 

} 

正如你在我的拳头表中看到,寒冷的页面,我有另一台名为PageContent的关系。

在我的网页类我有这个代码

[ForeignKey("PageID")] 
    public ICollection<PageContent> PageContent { get; set; } 

现在,当我尝试添加新pageContent进入新的页面我得到一个错误。

看到这个代码

public ActionResult AddPage(PageModel page) 
    { 
     SystemLogic cmd = new SystemLogic(); 

     page.Leng = "he"; 
     Models.Pages p = new Pages(); 

     p.ParentID = page.ParentID; 
     PageContent pageContent = new PageContent(); 
     pageContent.Text = page.Content; 

     p.PageContent.Add(pageContent); 

的错误不是设置为一个对象的一个​​实例

对象引用。

我做错了什么?

+0

你到底在哪一行得到对象引用错误?如果它在'p.PageContent.Add(pageContent);'那么你确定p.PageContent的确设置了,而不是NULL –

回答

1

您将获得NRE p.PageContent.Add(pageContent);,因为集合未初始化。初始化Pages类的构造函数中的集合。

public class Pages 
{ 
    public Pages() 
    { 
     PageContent = List<PageContent>(); 
     Images = List<ImagesTable>(); 
    } 

    [Required] 
    public int ID { get; set; } 

    public int ParentID { get; set; } 

    [Required] 
    public int PageType { get; set; } 

    [Required] 
    [DataType(DataType.Text)] 
    [DisplayName("כותרת")] 
    public string Title { get; set; } 

    public string SearchWords { get; set; } 

    public string Leng { get; set; } 

    public int? Sort { get; set; } 

    public string Modules { get; set; } 

    [ForeignKey("PageType")] 
    public virtual PagesType Type { get; set; } 

    public virtual IEnumerable<PagesType> Types { get; set; } 

    [ForeignKey("PageID")] 
    public ICollection<PageContent> PageContent { get; set; } 

    [ForeignKey("PageID")] 
    public virtual ICollection<ImagesTable> Images { get; set; } 
} 

或者你对象添加到集合

if (p.PageContent == null) p.PageContent = new List<PageContent>(); 

p.PageContent.Add(pageContent); 

之前,您应该考虑使用适当的命名约定(如Page而不是Pages)。