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

时间:2012-05-17 17:04:35

标签: c# html asp.net-mvc

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

提前致谢

1 个答案:

答案 0 :(得分:1)

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

我不知道你的对象模型是如何设置的,但如果两个集合都是Course对象的集合,那么这就是一个黑客的想法:

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

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