创建控制器及服务及视图模型

创建ClassViewModel

班级的视图模型和专业、年级的视图模型一样,都有IdName属性。

不同的是,在添加班级时,需要指定班级所处的专业和年级,因此,还需要添加MajorIdGradeId

除此之外,在显示班级列表是,还需要显示专业名称和年级,因此还需要MajorNameGradeName

最后,视图模型还需要附带Major和Grade的下拉列表数据,因此还需要2个SelectList类型的属性MajorsGrades

最终ClassViewModel的代码如下:

public class ClassViewModel
{
    public Guid Id { get; set; }

    [Required(ErrorMessage = "班级名称不能为空")]
    [Display(Name = "班级名称")]
    public string Name { get; set; } = string.Empty;

    public Guid MajorId { get; set; }

    [Display(Name = "专业名称")]
    public string MajorName { get; set; } = string.Empty;

    public Guid GradeId { get; set; }

    [Display(Name = "年级名称")]
    public string GradeName { get; set; } = string.Empty;

    public SelectList? Majors { get; set; }
    public SelectList? Grades { get; set; }
}

创建ClassService

由于班级管理涉及到专业和年级的数据,因此,除了需要引入ClassRepo的实例,还需要引入MajorRepoGradeRepo的实例。

代码如下:

public class ClassService(ClassRepo classRepo, MajorRepo majorRepo, GradeRepo gradeRepo)
{

}

最后,通过AddScoped将ClassService注册为服务。

services.AddScoped<ClassService>();

创建ClassController

创建ClassController,并引入ClassService实例。

代码如下:

public class ClassController(ClassService classService) : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}