我是JQuery(Json)的初学者。我不确定是否可以将DateTime追加到Json表中。我有一个下拉列表。通过选择一项,它会自动将一些数据加载到表中。为此,我正在尝试这样的json函数:

<script>

    $(document).ready(function () {

        $("#departmentId").change(function () {

            var deptId = $("#departmentId").val();
            //$("#courseId").empty();
            var json = { departmentId: deptId };
            $("#table").empty();
            $("#table").append('<table class="table"><tr><th>Course Code</th><th>Name</th><th>Schedule Info</th></tr>');
            $.ajax({
                type: "POST",
                url: '@Url.Action("ViewAllScheduleByDept", "ClassSchedule")',
                contentType: "application/json; charset=utf-8",
                data: JSON.stringify(json),
                success: function (data) {

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

                        $("#table").append('<tr><td>' + value.Code + '</td><td>' + value.Name + '</td><td>' + value.RoomName + ',' + ***value.StartTime.toDateString() +*** ' </td></tr>');

                    });
                    $('#table').append('</table>');
                }
            });
        });
    });
</script>


它完美地显示了Code,Name和RoomName,但是如果我将StartTime与这三个项目一起添加,它将什么也不显示。有没有可能在Json表追加上转换DateTime的可能方法?如果没有,我该如何在MVC Razor视图上显示日期时间以及代码,名称和房间名称。

这是我的控制器:

[HttpPost]
    public JsonResult ViewAllScheduleByDept(int departmentId)
    {
        var schedules = GetAllSchedule();
        var scheduleList = schedules.Where(a => a.DepartmentId == departmentId).ToList();
        return Json(scheduleList, JsonRequestBehavior.AllowGet);

    }

    private List<ViewSchedule> GetAllSchedule()
    {
        List<ViewSchedule> allViewSchedules = scheduleManager.ViewAllSchedule();
        return allViewSchedules;

    }
}


和型号:

public class ViewSchedule
{
    public int DepartmentId { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
    public string RoomName { get; set; }
    public DateTime StartTime { get; set; }


}

最佳答案

您的端点返回的json日期将是这样。请参见StartTime属性的值。

[{
   "Code":"SomeCode",
   "Name":"Some Name",
   "StartTime" :"/Date(1472239122527)/"
}]


那是您拥有的DateTime值的纪元表示形式。 json序列化器将日期时间值转换为其对应的unix纪元时间(自1970年1月1日(星期四)00:00:00协调世界时(UTC)起经过的秒数)。

但是在您的代码中,您尝试在其上调用toDateString()方法。 toDateString()应该在Date对象上调用。

因此,首先将此数字转换为有效的Date对象,然后在其上调用toDateString方法。

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

   var dateFormatted = new Date(parseInt(value.StartTime.substr(6))).toDateString();
   $("#table").append('<tr><td>' + value.Code
                   + '</td><td>' + value.Name
                   + '</td><td>' + value.RoomName
                   + ',' + dateFormatted + ' </td></tr>');

});

08-25 11:49
查看更多