我白天创建了相同的主题,但不清楚,我正在重新创建它,更清晰。
我正在开发一个 ASP.NET Core MVC 项目,使用 N 层架构。我在数据库端有两个表。
表名:
TaskList
表名:
TaskListComment
我使用两个视图
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
值基于。
您需要在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);
}
[HttpGet]
public IActionResult TaskDetail(int id)
{
Context context = new Context();
var taskListViewModel = new TaskListViewModel
{
TaskLists = taskListManager.itemGetById(id),
GetTaskListComments = context.TaskListComment.Where(x => x.TaskId == id).ToList(),
};
return View(taskListViewModel);
}
当我按照上面的方式编辑代码时,问题就解决了。