2012-01-13 12 views
1

我正在構建一個MVC3網站,並在第一個 時間使用Knockout/JSON,我是JSON的新手,但並不擅長JavaScript。 我使用的剃刀視圖中MVC3模型,解析成JSON如何滾動「ViewModel的JSON」數組來更改KnockoutJS的日期格式?

在CSHTML的模型是

@model IEnumerable<MySite.Models.UserViewModel> 

然後:

var initialData = @Html.Raw(Json.Encode(Model)); 
var viewModel = { 
       fields: ko.observableArray(initialData), 

等.....

所有的foreach綁定在一個表中顯示 數據等,但問題是,在JSON數組/模型有 某些日期,我需要更改以正確顯示它們。

其實,日期顯示像/ 日期(1319929111857)/

我會滾動所有的陣列和攔截標籤「出生日期」和 解析日期調用這樣的功能:

function formatJSONDate(jsonDate){ 
    var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); 
    return newDate; 

我該怎麼做? 我嘗試了好幾個小時用一個函數一樣,下面,但我不知道 如何調用生日:JSON數組的標籤,並改變了 內容:

formatDate: function() { 
     for (var i=0; i<this.fields().length;i++) 
     {//foreach JSON array item,find BirthDate: /Date(sssf) and encode it correctly} 

改變JSON將呈現正確的數據在視圖中。

之後,我需要能夠使用JqueryUI Datepicker編輯字段,並將所有數組重新發送到控制器並將我保存到數據庫。 我做得很好,還有其他更好的方法可以做到這一點嗎?

回答

1

看起來像您的ViewModel中的屬性是導致您所看到的格式的日期時間。他們需要成爲日期時間嗎?

我會使ViewModel字符串的屬性和服務器上的格式。在客戶端進行處理是不必要的一步。

+0

謝謝。所以你建議在將數據傳遞給模型之前將數據轉換爲字符串? 我會使用JQuery的日期選擇器,我記得它需要一個DateTime對象,如果不是很好,但如果它需要一個對象,我需要再次在客戶端將其轉換爲正確顯示日期.. – 2012-01-13 04:20:04

+0

@ user1146891 - 即使使用Jquery datepicker,這不應該是一個問題。它具有幫助函數,可以用你想要的格式解析和格式化日期。 $ .datepicker.formatDate(格式,日期,設置) - 將日期格式化爲具有指定格式的字符串值。 $ .datepicker.parseDate(格式,值,設置) - 從指定格式的字符串值中提取日期。 – drneel 2012-01-13 12:25:39

+0

@dmeel完美的是,我在創建JSON之前將數據服務器端轉換,現在它在視圖上按預期工作。謝謝你的時間 – 2012-01-13 18:54:56