如何通过JSON功能显示来自多个列表的数据?

时间:2017-03-01 21:43:19

标签: javascript asp.net json linq

我的模特:

ClassAllocate: ID,DepartmentId,CourseId,RoomId,DayId,StartTime,EndTime

课程:Id,CourseCode,CourseName,DepartmentId

会议室:Id,RoomNumber

日: ID,DayName

我正在尝试按视图页面中“ClassAllocates”表中的部门ID搜索课程,并尝试仅显示这些课程计划/分配详细信息。

我正在使用JSON从控制器发送列表到视图。我需要从JsonResult函数发送多个列表列表。我可以发送它们(我试图发送2个列表),但是,我无法显示它们。它在我的尝试中显示[对象对象]或没有或未定义。

我在视图中包含我的Controller功能和Javascript:

第一名:控制器功能

 public JsonResult GetCourseIdListByDepartmentId(int departmentId)
    {
        var x = db.ClassAllocates.DistinctBy(m => m.CourseId).Where(m => m.DepartmentId == departmentId).ToList();
        var r = db.ClassAllocates.DistinctBy(m => m.RoomId).Where(m => m.DepartmentId == departmentId).ToList();
        var all = new [] {x,r}.ToList();

        return Json(all, JsonRequestBehavior.AllowGet);
    }

第二名:查看Java脚本

<script>
$("#DepartmentId").change(function () {
    var dptId = $("#DepartmentId").val();
    //alert(dptId);
    $(".RowClass").empty();


    var json = {
        departmentId: dptId
    };
    $.ajax({
        type: "POST",
        url: '@Url.Action("GetCourseIdListByDepartmentId", "ClassAllocates")',
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(json),
        success: function (data) {

            $.each(data, function (key, value) {

                $(".table2").append(
                        '<tr class="RowClass">' +
                        '<td>' + value.Couse + '</td>'

                        + '<tr>');
                });
        }
    });
});

结果如下: 未定义

我需要,CourseCode,CourseName和RoomNumber

1 个答案:

答案 0 :(得分:0)

我有办法。当JSON返回List或list时,我需要在View代码或客户端代码中JSON成功后写两次for循环。

$.each(data, function (key, value) {
                if (key==0) {
                    $.each(this, function (k, v) {
                        $(".table2").append(
                            '<tr class="RowClass">' +
                            '<td>' + v.Course.CourseCode + '</td>'

                            + '<tr>');
                    });
                }

                });

现在我正试图传递并获得更复杂的数据。