我有两个模型Project
和Category
,其中每个项目都包含多个类别。
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; }
}
Category.cs
public class Category
{
public int Id { get; set; }
[Required]
[Display(Name="Category Name")]
public string Name { get; set; }
[Required]
[ForeignKey("Project")]
public int ProjectId { get; set; }
public Project Project { get; set; }
}
当我点击一个类别的Details
或Delete
(添加一些项目和类别后)链接后的脚手架,项目名称不会显示在两个视图中!只显示标签。它显示在Index
和Edit
视图中。可能是什么原因?
修改
这是Details
动作
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Category category = db.Categories.Find(id);
if (category == null)
{
return HttpNotFound();
}
return View(category);
}
当我在返回var pro = category.Project
之前添加一行View(category)
并开始调试时,pro
变量设置为null
。在Index
操作中,项目明确包含db.Categories.Include(c => c.Project).ToList()
,但不包含在Details
中。我需要明确包含它吗?如果是,怎么样?
答案 0 :(得分:0)
您可以将导航设置为虚拟(延迟加载)
public virtual Project Project { get;set; }
或者您可以使用Include方法(不需要虚拟关键字)
来使用预先加载Category category = db.Categories.Include(c => c.Project).FirstOrDefault(c => c.Id == id);