MVC 4 .NET中基本CRUD操作的内部服务器错误

时间:2014-02-10 21:02:57

标签: asp.net-mvc-4

我刚刚开始学习.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内部服务器错误而失败。

1 个答案:

答案 0 :(得分:2)

您可以尝试更改:

ActionResult Find(int? courseId)
return View(selectedCourse);

要:

JsonResult  Find(int? courseId)
return Json(selectedCourse, JsonRequestBehavior.AllowGet);

另外,我会检查data响应,以确保框架成功解析JSON。