班级的视图模型和专业、年级的视图模型一样,都有Id和Name属性。
不同的是,在添加班级时,需要指定班级所处的专业和年级,因此,还需要添加MajorId和GradeId。
除此之外,在显示班级列表是,还需要显示专业名称和年级,因此还需要MajorName和GradeName。
最后,视图模型还需要附带Major和Grade的下拉列表数据,因此还需要2个SelectList类型的属性Majors和Grades。
最终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; }
}
由于班级管理涉及到专业和年级的数据,因此,除了需要引入ClassRepo的实例,还需要引入MajorRepo和GradeRepo的实例。
代码如下:
public class ClassService(ClassRepo classRepo, MajorRepo majorRepo, GradeRepo gradeRepo)
{
}
最后,通过AddScoped将ClassService注册为服务。
services.AddScoped<ClassService>();
创建ClassController,并引入ClassService实例。
代码如下:
public class ClassController(ClassService classService) : Controller
{
public IActionResult Index()
{
return View();
}
}