2010-10-14 115 views
20

我正在使用jQuery日曆來顯示事件,該事件旨在從服務器中獲取數據。 在innit上,日曆觸發了一個AJAX請求來獲取事件對象數組(json編碼)。 目前爲止都很好。 但是,這個請求包含一個JSON編碼的日期和時間(在我的implimentation做的事情上)。 的代碼看起來是這樣的:ASP.NET MVC-將JSON DateTime傳遞給未映射到控制器參數的控制器

data: function (start, end, callback) { 
     $.post('/planner/GetPlannerEvents', { test: "test", start: JSON.stringify(start), end: JSON.stringify(end) }, function (result) { callback(result); }); 
    } 

爲GetPlannerEvents控制器方法的聲明如下所示:

public ActionResult GetPlannerEvents(DateTime start, DateTime end) 

的問題是,asp.net MVC 2似乎無法自動解析JSON編碼日期時間並因此抱怨開始和結束值爲空。

是否有另一種方法,我應該使用JavaScript日期傳遞到服務器,以便他們可以正確解析?

感謝,

+0

是否有任何理由您使用JSON.stringify?那次電話會議之前的價值是什麼? – Jab 2010-10-14 16:11:01

+0

定期javascript日期。我認爲我在看的演示使用了JSON.stringify,但是我真的認爲沒有真正的理由使用它。 – Sergio 2010-10-14 21:32:08

回答

48

你不應該JSON編碼的日期與stringify因爲默認模型聯編程序不會期望JSON。試試這個:

$.post('/planner/GetPlannerEvents', { start: start.toUTCString(), 
    end: end.toUTCString() }, function (result) { 
    callback(result); 
}); 
+1

再次達林,你讓我的一天! – Samuel 2012-08-17 18:52:49

+1

可能值得注意的是控制器需要一個字符串參數而不是DateTime。 – 2012-12-06 11:16:25

+0

我希望這個答案有更多的選票。有點難以在堆棧中過濾MVC控制器的問題。不能相信toUTCString()是答案。道具! – tranceporter 2013-05-13 08:18:57

-5

您需要使用的返回類型1JsonResult1s而不是1ActionResult1s

你的代碼去財產以後這樣

public JasonResult(DateTime start, DateTime end) { 
    //some logic 
    return Json(); // you can pass any values within Json() with new keyword 
} 
+2

謝謝,但json的結果是一個行動結果 – Sergio 2010-10-14 15:32:10

7

嘗試使用date.toISOString()將數據傳遞到服務器。它以ISO8601格式返回字符串。此方法也可用於格式化在uri中使用的日期。

$.post('/planner/GetPlannerEvents', { start: start.toISOString(), 
    end: end.toISOString() }, function (result) { 
    callback(result); 
}); 

爲什麼toISOString要好於toUTCString
toUTCString轉換爲UTC時區中的人類可讀字符串
toISOString轉換爲通用ISO格式它允許解決與區域設置和不同格式的問題。

+0

完全同意ISO在具有不同本地化設置的不同機器上比UTC更可靠和一致。 – MazBros 2015-12-10 14:27:44

0

date.toString的變化不適用於我,直到我添加json標題的帖子。由此產生的代碼如下:

var pstData = { 
    begDate: date1.toUTCString(), 
    endDate : date2.toUTCString() 
}; 

$.ajax({ 
    url:'url', 
    type:'POST', 
    data: JSON.stringify(pstData), 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
}) 
相關問題