C# ForeignKey导航属性值未显示在详细信息和删除视图中

C# ForeignKey导航属性值未显示在详细信息和删除视图中,c#,asp.net-mvc,C#,Asp.net Mvc,我有两个模型项目和类别,其中每个项目包含多个类别 Project.cs public class Project { public int Id { get; set; } [Required] [Display(Name="Project Name")] public string Name { get; set; } public ICollection<Category> Categories { get; set; } } 在脚手

我有两个模型项目和类别,其中每个项目包含多个类别

Project.cs

public class Project
{
    public int Id { get; set; }

    [Required]
    [Display(Name="Project Name")]
    public string Name { get; set; }

    public ICollection<Category> Categories { get; set; }
}
在脚手架搭建之后,当我为一个类别添加一些项目和类别链接后,单击“详细信息”或“删除”时,项目名称不会显示在两个视图中!只有标签显示。但它会显示在索引和编辑视图中。原因可能是什么

编辑

这是行动的细节


当我在返回Viewcategory并开始调试之前添加一行var pro=category.Project时,pro变量被设置为null。在索引操作中,项目被显式地包含在db.Categories.Includec=>c.project.ToList中,但没有详细说明。我需要明确地包括它吗?如果是,如何设置?

您可以将导航设置为虚拟加载

public virtual Project Project { get;set; }
或者,您可以使用Include方法使用即时加载,无需使用virtual关键字

Category category = db.Categories.Include(c => c.Project).FirstOrDefault(c => c.Id == id);

好吧,从一开始,两者都不是虚拟的。应该是公共虚拟ICollection类别{get;set;}和公共虚拟项目{get;set;}是的,这就是问题所在。谢谢
public virtual Project Project { get;set; }
Category category = db.Categories.Include(c => c.Project).FirstOrDefault(c => c.Id == id);