2012-01-13 4 views
1

私はMVC3サイトを構築していて、最初に 時間Knockout/JSONを使用しています。私はJSONを初めて使っていて、Javascriptではあまり良くありません。 .....KnockoutJSの日付書式を変更するために「JSONをViewmodelから」配列をスクロールする方法は?

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

など: 私はJSON

に解析されたかみそりビューでMVC3モデルを、使用していCSHTMLでのモデルは、その後

@model IEnumerable<MySite.Models.UserViewModel> 

です

データなどを表示している表のforeachバインディングではすべて正常に動作しますが、問題はJSON配列/モデルには それらを正しく表示するために変更する必要のある日付。

function formatJSONDate(jsonDate){ 
    var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); 
    return newDate; 
:実際の日付は、私はすべての配列をスクロールして、ラベル「生年月日」インターセプトし このような関数を呼び出して、日付を解析します/ 日(1319929111857)/

のように表示されている

どうすればいいですか? iは、以下のことのような機能を使用するために時間を試みたが、私は誕生日呼び出す方法 を知らない:JSON配列のラベルをして 内容を変更:JSONを変更

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

が表示されますビュー内の正しいデータ。

その後、私はJqueryUI Datepickerでフィールドを編集し、コントローラにすべての配列を再送信し、DBに保存する必要があります。 私はそれをうまくやっているか、これを行うための他のより良い方法がありますか?

答えて

1

ViewModelのプロパティは、表示されている書式設定を引き起こしているDateTimesと思われるようです。彼らはDateTimesにする必要がありますか?

ViewModel文字列のプロパティを作成し、サーバー上で書式設定を行います。クライアント上で処理を行うことは、不要なステップです。

+0

ありがとうございます。だからあなたはモデルに渡す前に、コントローラ内の文字列にデータを変換することをお勧めしますか? 私はJqueryのdatepickerを使用しますが、DateTimeオブジェクトが必要であることを覚えています。そうでない場合はオブジェクトが必要ですが、クライアントで日付を正しく表示するために変換する必要があります。 –

+0

@ user1146891 - Jquery問題ではないはずのdatepicker。それはあなたが望む形式で日付を構文解析してフォーマットするヘルパー関数を持っています。 $ .datepicker.formatDate(format、date、settings) - 日付を指定された形式の文字列値にフォーマットします。 $ .datepicker.parseDate(format、value、settings) - 指定された形式の文字列値から日付を抽出します。 – drneel

+0

@dmeel JSONを作成する前にデータサーバーサイドを完璧に変換しましたが、今度はビューで期待どおりに動作します。御時間ありがとうございます –

関連する問題