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

上記のコントローラーは、生徒がカートに入れているコースの数に応じて、1 つまたは複数の CourseID を表示する場合があります。ここで、学生のカートに利用可能なコースがない場合、すべてのコースを表示したいと考えています。同じコントローラーアクションでこれを達成できますか? または、すべてのコースを表示する追加のコントローラー アクションが必要ですか?

前もって感謝します

4

1 に答える 1

1

もちろん、各セットのタイプが同じである限り、モデルに異なるデータを与える必要があるでしょう。空のカート/すべてのコースを表示するタイプが異なる場合は、「すべてのコース」モデルに対応する別のビューを表示するようにフレームワークに指示することもできます。

オブジェクトモデルがどのように設定されているかはわかりませんが、両方のセットがコースオブジェクトのコレクションである場合のハックのアイデアは次のとおりです。

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 に答える