MVC5中如何在HomeController调用StudentBLL的GetAllStudents方法
解决在HomeController中调用StudentBLL获取并转换学生列表的问题
首先,先帮你修正两处关键错误,这两个问题不解决的话代码肯定跑不起来:
- 你的
StudentBLL里的方法名拼写错误:GetAllStudnets→ 应该是GetAllStudents(少了个字母e) StudentBLL中映射StuName时的类型错误:dataRow.Field<int>("StudentName")→ 学生姓名是字符串类型,要改成dataRow.Field<string>("StudentName")
修正后的StudentBLL代码
public class StudentBLL { StudentDAL objStudent = new StudentDAL(); // 修正方法名拼写 public List<StudentDAL> GetAllStudents() { List<StudentDAL> lstStudents = objStudent.GetStudentList().Tables[0].AsEnumerable().Select( dataRow => new StudentDAL { StuID = dataRow.Field<int>("StudentId"), // 修正姓名字段的类型为string StuName = dataRow.Field<string>("StudentName") }).ToList(); return lstStudents; } }
在HomeController的LoadStudents方法中调用并转换列表
接下来,你只需要在Controller中实例化StudentBLL,调用方法获取学生列表,再把列表转换成SelectListItem集合即可:
public JsonResult LoadStudents(int randomJunk) { // 1. 实例化StudentBLL对象 var studentBll = new StudentBLL(); // 2. 调用修正后的GetAllStudents方法获取学生列表 var studentList = studentBll.GetAllStudents(); // 3. 将StudentDAL列表转换为SelectListItem集合 List<SelectListItem> selectListItems = studentList.Select(s => new SelectListItem { // 将StuID作为SelectListItem的Value(通常转成字符串类型) Value = s.StuID.ToString(), // 将StuName作为SelectListItem的Text Text = s.StuName }).ToList(); // 4. 生成SelectList并返回Json结果 var notesTypes = new SelectList(selectListItems, "Value", "Text"); return Json(notesTypes, JsonRequestBehavior.AllowGet); }
额外优化建议
如果你的项目使用了依赖注入(DI),更推荐通过构造函数注入StudentBLL,而不是直接在方法内实例化,这样代码更易于测试和解耦:
private readonly StudentBLL _studentBll; // 构造函数注入 public HomeController(StudentBLL studentBll) { _studentBll = studentBll; } public JsonResult LoadStudents(int randomJunk) { var studentList = _studentBll.GetAllStudents(); // 后续转换逻辑同上 }
内容的提问来源于stack exchange,提问作者AJMi
相关产品推荐
相关产品推荐

