首页 > 解决方案 > SelectListItem 为空,如果方法内的语句显示它被填充

问题描述

错误信息: http: //prntscr.com/qtlodf

方法:

    public IActionResult GroepsResultaten(int vakId, int groepId)
    {

        var studentenLijst = _context.Student.Join(_context.StudentGroep,
           s => s.Id,
           sg => sg.StudentId,
           (s, sg) => new { Student = s, StudentGroep = sg })
           .Where(x => x.StudentGroep.GroepId == groepId)
           .Select(x => x.Student);

        ViewBag.Studenten = new SelectList(studentenLijst, "Id", "Naam");
        return View();
    }

我也试过这个:

        public IActionResult GroepsResultaten(int vakId, int groepId)
        {

            var studentInfo = _context.Student
                .Select(s =>
                new
                {
                    s.Id,
                    Naam = string.IsNullOrEmpty(s.Tussenvoegsel)
                    ? s.Voornaam + " " + s.Achternaam + " - " + s.Studentnummer
                    : s.Voornaam + " " + s.Tussenvoegsel + " " + s.Achternaam + " - " + s.Studentnummer,
                    forStudent = s.Studentnummer + "-" + s.Achternaam
                });

            ViewBag.Studenten = new SelectList(studentInfo, "Id", "Naam");
            return View();
        }

我对此有点困惑。我想为 x 组的所有学生返回多个输入字段(我现在只是在使用 selectlist 进行测试),从那里我希望能够使用 get 方法为视图中包含的主题对学生进行评分。因为英语不是我的第一语言,所以我附上了两张截图来阐明我的意思。

澄清我想要实现的目标:
组视图http :
//prntscr.com/qtlrqd 方法视图的线框:http: //prntscr.com/qtlswn


楷模:

 public class Student
    {
        public int Id { get; set; }
        [Required]
        public string Voornaam { get; set; }
        [Required]
        public string Achternaam { get; set; }
        public string Tussenvoegsel { get; set; }
        public string Studentnummer { get; set; }

        public List<Resultaat> Resultaten { get; set; }
        public List<StudentGroep> Groepen { get; set; }
    }

 public class Groep
    {
        public int Id { get; set; }
        [Required]
        public string Naam { get; set; }
        [Required]
        public string Groepscode { get; set; }

        public List<GroepVak> Vakken { get; set; }
        public List<StudentGroep> Studenten { get; set; }
    }

public class StudentGroep
    {
        public Student Student { get; set; }
        public int StudentId { get; set; }

        public Groep Groep { get; set; }
        public int GroepId { get; set; }
    }

我希望我已经包含了足够的信息,如果这样更容易的话,我也可以在 discord 上找到。

标签: c#asp.net-core.net-core

解决方案


问题是SelectList类返回什么。因为视图侧结果ViewBag.Studenten为空。

此外,您必须确保数据库查询返回一个值。


推荐阅读