创建关系并将 ID 交换到视图 EF ASP.NET MVC 中的名称

本文关键字:MVC NET ASP EF 视图 关系 ID 交换 创建 | 更新日期: 2023-09-27 17:57:13

我有两个模型:

public class Project
{
    public int ProjectID { get; set; }
    public string Name { get; set; }
    public string ShortDesc { get; set; }
    public string LongDesc { get; set; }
    public int Status { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public string Image { get; set; }
    public List<Note> Notes { get; }
}

和:

public class Note
{
    public int NoteID { get; set; }
    public int ProjectID { get; set; }
    public string Name { get; set; }
    public string Content { get; set; }
    public int Status { get; set; }
    public DateTime Timestamp { get; set; }
    public string Tags { get; set; }
}

我的目标是能够轻松地将注释和项目对象关联到视图中。

要将项目ID存储在Note对象中,我这样做:

// GET: Notes/Create
public ActionResult Create() {
    ViewBag.Projects = db.Projects.ToList();
    return View();
}

稍后在"创建"视图中:

@Html.DropDownListFor(model => model.ProjectID, new  SelectList(ViewBag.Projects, "ProjectID", "Name"))

这允许我按名称选择相关项目。

如何正确交换项目ID与索引页面上的 Project.Name(显示我的所有笔记)?

我还想在项目索引中看到相关的注释列(其中列出了我的所有项目)。是否可以使用ProjectModel中的注释列表?

创建关系并将 ID 交换到视图 EF ASP.NET MVC 中的名称

可以将 Project 属性添加到Note类。

public class Note
{
    public int NoteID { get; set; }
    public int ProjectID { get; set; }
    public string Name { get; set; }
    public string Content { get; set; }
    public int Status { get; set; }
    public DateTime Timestamp { get; set; }
    public string Tags { get; set; }
    public virtual Project Project {set;get;}
}

现在,您可以在视图中访问此项目属性

@model List<Note>
@foreach(var item in Model)
{
  <p>@item.Name</p>
  <p>@item.Project.Name</p>
}