ASP.NET Core:通过ID值获取单个页面上的多个表

问题描述 投票:0回答:1

我白天创建了相同的主题,但不清楚,我正在重新创建它,更清晰。

我正在开发一个 ASP.NET Core MVC 项目,使用 N 层架构。我在数据库端有两个表。

表名:

TaskList

  • 任务ID(主键)
  • 任务详情

表名:

TaskListComment

  • CommentId(主键)
  • 评论详情
  • 任务ID

我使用两个视图

Index
Index2

Index
页面,列出了
TaskList
表中的数据。然后我根据
Index2
值将详细信息移动到
ID
页面。目前还没有问题。

我还想在

TaskListComment
页面上列出
Index2
数据。我想根据
TaskId
值来做到这一点。

但是当我想用相同的代码列出时,它会根据

CommentId
值带来数据。
CommentId
TaskId
值彼此不同。

GenericRepository.cs

public T GetById(int id)
{
    using var context = new Context();
    return context.Set<T>().Find(id);
}

TaskListCommentManager.cs

public TaskListComment itemGetById(int id)
{
    return _taskListCommentDal.GetById(id);
}

TaskListController.cs

[HttpGet]
public IActionResult TaskDetail(int id)
{
    taskListViewModel.TaskLists = taskListManager.itemGetById(id);
    return View(taskListViewModel);
}

当我使用上面的代码按

ID
值列出
TaskListComment
时,
CommentId
值基于。

c# entity-framework asp.net-core
1个回答
0
投票

您需要在TaskListManager类中创建一个名为GetComments的新方法(方法名称应以大写字母开头)。 GetComments 方法应该使用任务的 ID 来获取评论列表:

public class TaskListManager : GenericRepository<TaskList>
{
    public GetComments(int taskId)
    {
        return _context
           .TaskListComments
           .Where(c => c.TaskId == taskId)
           .ToList();
    }
}

然后在您的 TaskDetails 操作中,您应该执行以下操作:

[HttpGet]
public IActionResult TaskDetail(int id)
{
    var taskListViewModel = new TaskListViewModel
    {
       TaskList = _taskListManager.GetById(id),
       Comments = _taskListManager.GetComments(id)
    }

    return View(taskListViewModel);
}
© www.soinside.com 2019 - 2024. All rights reserved.