在视图中显示来自同一控制器操作的不同结果

本文关键字:操作 控制器 结果 显示 视图 | 更新日期: 2023-09-27 18:34:40

我有一个控制器,它可以根据我提供的学生ID在视图中显示课程ID列表。下面是控制器操作:

public ActionResult ShowCourseId(int StudentId)
{
    ViewData.Model = from c in course.vwCourse.Where(s => s.StudentID == StudentId)
                     group c by c.CourseID into g
                     select g.FirstOrDefault();
    return View();
}

上述控制器可能会显示一个或多个 CourseID,具体取决于学生购物车中可用的课程数量。现在,如果学生的购物车中没有可用的课程,我想显示所有课程。我可以在相同的控制器操作中实现此目的吗?还是需要显示所有课程的附加控制器操作?

提前致谢

在视图中显示来自同一控制器操作的不同结果

当然,您可能只需要为模型提供不同的数据,只要每个集合的类型相同即可。 如果空购物车/显示所有课程具有不同的类型,您还可以告诉框架显示与"所有课程"模型对应的不同视图。

我不知道您的对象模型是如何设置的,但如果两个集合都是课程对象的集合,这里有一个技巧:

public ActionResult ShowCourseId(int StudentId)
{
    var studentCourses = (from c in course.vwCourse
                          where c.StudentID == StudentId
                          group c by c.CourseID into g
                          select g.FirstOrDefault()).ToList();
    if(studentCourses  == null || !studentCourses .Any())
    {
        studentCourses  = (from c in course.vwCourse
                           group c by c.CourseID into g
                           select g.FirstOrDefault()).ToList();
    }
    ViewData.Model = studentCourses;
    return View();
}

第一个查询返回的类型是什么?它是课程的集合吗?