在MVC 4 .NET中进行基本的CRUD操作出现了内部服务器错误。

25 浏览
0 Comments

在MVC 4 .NET中进行基本的CRUD操作出现了内部服务器错误。

我刚开始学习.NET MVC 4框架,并在一些基本的CRUD操作中遇到了错误。我有一个选择元素,当改变时,会发送一个Ajax请求到服务器以找到给定id的课程。以下是Ajax调用的代码:\n

$('.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);
        }
    });
});

\n这正确地发送一个请求,形式为`http://localhost:62020/Roster/Find?courseId=2`。\n然后,在我的Roster控制器中有一个Find ActionRequest:\n

[HttpGet]
public ActionResult Find(int? courseId)
{
    StudentsViewModel selectedCourse = new StudentsViewModel();
    List 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);
}

\n然而,尽管控制器逻辑在运行时调试时似乎是正确的,但Ajax却以500内部服务器错误失败。

0
0 Comments

问题原因:在MVC 4 .NET中进行基本的CRUD操作时出现了内部服务器错误。原因是在Find方法中返回了一个View,而应该返回一个JsonResult。

解决方法:将Find方法中的返回类型从ActionResult改为JsonResult,并在返回时使用Json方法将selectedCourse对象转换为Json格式的数据返回给客户端。此外,建议使用JSON作为数据传输的标准,因为JSON轻量且相对安全,而HTML则存在安全风险。

以下是修改后的代码:

public JsonResult Find(int? courseId)

{

return Json(selectedCourse, JsonRequestBehavior.AllowGet);

}

通过以上修改,问题得到解决,并且在.NET MVC框架中,使用JSON对象作为数据传输更加标准化,将数据传输到客户端后,由客户端负责将JSON数据放入DOM中。

0