戳戳猫的小窝
更新日志
关于
# 创建StudentViewModel 在Student模型中,除了Class导航外,有**Id**,**Number**,**Name**,**Gender**,**Birthday**,**ClassId**这些属性,因此StudentViewModel视图模型中也应该有这些属性。 除此之外还应该有**MajorName**,**GradeName**,**ClassName**分别显示专业名称,年级,班级名称。 在创建学生和编辑学生的视图中,还需要通过专业和年级去筛选班级,因此还需要**MajorId**和**GradeId**获取班级列表。 最后,专业,年级,班级的下拉列表数据也需要通过视图模型传递。 最终,StudentViewModel的代码如下: ``` public class StudentViewModel { public Guid Id { get; set; } [Required(ErrorMessage = "请输入学号")] [Display(Name = "学号")] public string Number { get; set; } = string.Empty; [Required(ErrorMessage = "请输入姓名")] [Display(Name = "姓名")] public string Name { get; set; } = string.Empty; [Display(Name = "性别")] public bool Gender { get; set; } [Display(Name = "生日")] [DataType(DataType.Date)] public DateTime Birthday { get; set; } = DateTime.Now; public Guid ClassId { get; set; } [Display(Name = "班级名称")] public string ClassName { 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; } public SelectList? Classes { get; set; } } ``` 其中`[DataType(DataType.Date)]`表示DateTime只显示年月日部分,`=DateTime.Now`表示默认时间为现在。 # 创建StudentService 创建StudentService并引入StudentRepo, MajorRepo, GradeRepo, ClassRepo的实例。 代码如下: ``` public class StudentService(StudentRepo studentRepo, MajorRepo majorRepo, GradeRepo gradeRepo, ClassRepo classRepo) { } ``` 最后,通过AddScoped将StudentService注册为服务。 ``` services.AddScoped<StudentService>(); ``` # 创建StudentController 创建StudentController,并引入StudentService实例。 代码如下: ``` public class StudentController(StudentService studentService) : Controller { public IActionResult Index() { return View(); } } ```
创建控制器及服务及视图模型