用JQuery Ajax返回一個Entity的Json數據時,如果Entity的屬性中有日期格式,那返回來的是一串字符串,如下圖所示:

在網上找了很久也沒有找到一個好的解決方案,最后自己寫一個javascrip Function 特此記錄,以備后用:
UPDATE:可以用Json.net中IsoDateTimeConverter:
Product pro = new Product();
pro.PNo = "001";
pro.PName ="Apple";
pro.PDate =new DateTime(2011, 12, 28);
pro.Price = 3.99M;
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();//這里使用自定義日期格式,默認是ISO8601格式
timeConverter.DateTimeFormat ="yyyy-MM-dd";//設置時間格式
string json = JsonConvert.SerializeObject(pro,Formatting.Indented,timeConverter);//轉換序列化的對象
//string json = JsonConvert.SerializeObject(pro, new IsoDateTimeConverter());//默認是ISO8601格式
context.Response.Write(json);}
輸出結果:"{\r\n \"PNo\": \"001\",\r\n \"PName\": \"Apple\",\r\n \"PDate\": \"2011-12-28\",\r\n \"Price\": 3.99\r\n}"
調用前的圖像問題:
function ChangeDateFormat(cellval)
{
var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10));
var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
var currentDate = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
return date.getFullYear() + "-" + month + "-" + currentDate;
}
function DataBindToMemberDetailDialog(memberObj)
{
$("#span_memberName").text(memberObj.UserName);
$("#span_sex").text(memberObj.SexText);
$("#span_firstNameAndLastName").text(memberObj.LastName + " " + memberObj.FirstName);
$("#span_birthday").text(ChangeDateFormat(memberObj.Birthday));
$("#span_email").text(memberObj.Email);
$("#span_memberRate").text("此處還要修改");
$("#span_loginCount").text(memberObj.LoginCount);
$("#span_downloadCount").text(memberObj.DownloadCouponCount);
$("#span_scoreCount").text(memberObj.ScoreCount);
$("#span_createDate").text(memberObj.CreateDate);
}
執行后的結果:

