我是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>');
});