0

我有一个控制器,它根据我提供的 StudentID 在视图中显示 CourseID 列表。这是控制器动作:

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,具体取决于学生在他或她的购物车中可用的课程数量。现在,如果学生的购物车中没有可用的课程,我想显示所有课程。我可以在同一个控制器动作中实现这一点吗?还是我需要一个额外的控制器动作来显示所有课程?

提前致谢

4

1 回答 1

1

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

我不知道您的对象模型是如何设置的,但是如果两个集合都是 Course 对象的集合,这是一个 hack 想法:

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();
}

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

于 2012-05-17T17:08:39.680 回答