【问题标题】:displaying varying results in a view from same controller action在同一控制器操作的视图中显示不同的结果
【发布时间】:2012-05-17 17:04:34
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: c# html asp.net-mvc


    【解决方案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();
    }
    

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

    【讨论】:

    • 我们把它输出到一个列表中,它不总是一个集合吗?
    • 更多的问题是它是 List 还是 List 或类似的东西。我无法推导出它们是否是同一个对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多