基本上計算日期的差距可以在後端的程式裡或是在資料庫中就可以解決,
但有些時候資料只會在前端出現而未後送到Server Side,或是說不想增加資料庫或是Server Side的負載,
所以就會將這種單純的顯示日期時間差距的計算工作給放到前端去做,
這樣做其實也是有好處的,好處就是讓Client Side去做這類瑣碎的計算,
因為不牽涉到太複雜的邏輯計算,也算是分擔後端的壓力。
所以接下來就會介紹三種方式來達成在Client Side去計算日期時間差距的功能。
基本上計算日期的差距可以在後端的程式裡或是在資料庫中就可以解決,
但有些時候資料只會在前端出現而未後送到Server Side,或是說不想增加資料庫或是Server Side的負載,
所以就會將這種單純的顯示日期時間差距的計算工作給放到前端去做,
這樣做其實也是有好處的,好處就是讓Client Side去做這類瑣碎的計算,
因為不牽涉到太複雜的邏輯計算,也算是分擔後端的壓力。
所以接下來就會介紹三種方式來達成在Client Side去計算日期時間差距的功能。
上一篇「ASP.NET MVC, JSON資料的日期轉換與格式化 1」說明了後端序列化的JSON日期資料要如何轉換以及格式化,
然而我們在後端所用的序列化JSON是直接使用ASP.NET MVC的預設內部方法,也就是用JavascriptSerializer來做序列化,
而之前有好幾篇文章也有說明到各種的在後端序列化的方式,
所以這一篇我們就來看看各種的序列化方式的JSON日期轉換與格式化。
前面有好幾篇文章是說明在後端的程式中要如何去對物件資料序列化為JSON,
而物件資料序列化為JSON之後就是要傳給前端去使用,然而JSON資料卻會有個小小的問題存在,
JSON規格中沒有對日期時間的型別去做定義,在 .NET 環境下的日期時間資料在序列化之後卻會有個特別的表示方法,
讓使用者知道某個欄位的資料是個日期型別,
如果是直接已JsonResult的Json方法做資料的序列化,則日期型別的資料會是以下格式:
\/Date(1316747376403)\/
如果是用Json.NET的JsonConvert.SerializeObject()來序列化,則日期型別的資料會是以下格式:
\/Date(1316747376403+0800)\/
除非是在後端的程式中就已經對日期型別的資料去做處理,不然傳到前端的日期資料都還是要再做個處理。
如果使用TagBuilder的地方是在ASP.NET MVC2的網站專案下,是可以直接使用TagBuilder,
而要是將有使用到TagBuilder的類別、Helper的程式放在另外的類別庫專案,也只需要去加入System.Web.MVC的參考,
在ASP.NET MVC 2 裡,TagBuilder的命名空間是「System.Web.Mvc」而組件是「System.Web.Mvc.dll」
但是到了ASP.NET MVC 3 後就有了改變。
接續「ASP.NET MVC + JSON 自定義JsonResult 1」的內容,
上一篇文章的最後有說,Json.NET所提供的 JsonNetResult類別並不是很適合拿來使用,
而在「使用Entity Framework 將物件轉為JSON時遇到循環參考錯誤 3」裡面,我們也建立了兩個JavaScriptConverter類別,
所以我們就自己來建立一個自己定義的JsonResult,並且使用之前所建立EFJavaScriptSerializer,
這個 EFJavaScriptSerializer 可以分別依據狀況使用 EFSimpleJavaScriptConverter 或 EFJavaScriptConverter…