我刚刚开始学习.NET MVC 4框架,并且遇到了一些基本的CRUD操作产生错误的麻烦。我有一个select元素,在更改后,向我的服务器发送一个Ajax请求,以找到给定id的课程。这是ajax调用:
$('.courseSelect').change(function () {
$.ajax({
url: "@Url.Action("Find", "Roster")",
data: {
courseId: $('.courseSelect').val()
},
dataType : 'json',
type: "GET",
success: function (data) {
console.log(data);
},
error: function (xhr, err, type) {
console.log(xhr);
console.log(err);
console.log(type);
}
});
});
这正确地以http://localhost:62020/Roster/Find?courseId=2
然后我在我的名册控制器中找到了一个Find ActionRequest:
[HttpGet]
public ActionResult Find(int? courseId)
{
StudentsViewModel selectedCourse = new StudentsViewModel();
List<Course> courses = Db.Courses.Where(s => s.Id >= 0).ToList();
foreach (Course c in courses)
{
selectedCourse.AllCourses.Add(c);
}
selectedCourse.currentCourse = Db.Courses.Find(courseId);
selectedCourse.AllStudents = Db.Students.Where(s => s.Id >= 0).ToList();
return View(selectedCourse);
}
但是,即使在对每一行进行运行时调试时控制器逻辑似乎是正确的,但Ajax也会因500内部服务器错误而失败。
答案 0 :(得分:2)
您可以尝试更改:
ActionResult Find(int? courseId)
return View(selectedCourse);
要:
JsonResult Find(int? courseId)
return Json(selectedCourse, JsonRequestBehavior.AllowGet);
另外,我会检查data
响应,以确保框架成功解析JSON。