0

asp.net Web フォームと非表示の値を使用してノックアウト ビューモデルを保存し、シリアル化後に次のページに渡します。

ko.toJSON(viewModel)[{}]ビューモデルに要素が含まれていない場合に返します。これが javascript シリアライザに渡されると、文字列が文字列として「null」を持っているため、爆発します。

var stringValue = MyHiddenField.Value

var listOfObjects = new JavaScriptSerializer().Deserialize<List<MyObjects>>(stringValue);

JavascriptSerializer で空の JSON を処理する方法はありますか?

ありがとう

4

1 に答える 1

1

これはおそらく、次のようにオブザーバブルを初期化しているために発生します。

var a = ko.observable();

これを行うと、ラップされていない の値はa未定義になります。ko.toJSON はネイティブの JSON.stringify 関数を呼び出します。この関数は、未定義の値を持つプロパティをシリアル化しません。これを防ぐ最も簡単な方法は、次のようにオブザーバブルを初期化することです。

var a = ko.observable(null);

シリアライゼーションでは、JavaScriptSerializer が消化できる "a":null になります。

これが例のフィドルです。コンソールを確認してください:http://jsfiddle.net/v87Ky/1/

于 2013-11-07T18:39:39.327 に答える