0

ASP.NET MVC 4.0 アプリケーションに取り組んでいます。

剣道ウィンドウの更新オプションで、このようにフォームの値をコントローラーに送信しています:-

var frm = $("#formUpdate");

var productWindow = $("#ProductWindow").data("kendoWindow");
productWindow .refresh({            
       url: "../../Product/UpdateProduct",
       data: { model: JSON.stringify(frm.serializeArray())}
});

以下は、コントローラーで取得している文字列です:-

[{"name":"DefaultAddressNumber","value":""},{"name":"Id2","value":"tax id 1"},   {"name":"Id2","value":"tax id 2"},{"name":"Id","value":"5"},{"name":"ProductTaxes","value":""},{"name":"ProdcutId","value":"20"},{"name":"InsuranceId","value":""},{"name":"OrgAddr1","value":""},{"name":"OrgAddr2","value":""},{"name":"OrgAddr3","value":""},{"name":"Name","value":"Amit Kumar"},{"name":"Description","value":"Description"},{"name":"SelectedProductSubTypeId","value":""},{"name":"IsEmailFinalizedProduct","value":"False"}]

そして、その文字列を配列またはオブジェクトの形式、または簡単に読み取ったり取得したりできる形式に再度デシリアライズしたいと考えています。

そして、そのために私は以下のコードを使用しました:-

var productString = Newtonsoft.Json.JsonConvert.DeserializeObject<ProductViewModel>(str);

しかし、これを使用しているときに以下のエラーが発生します:

現在の JSON 配列 ([1,2,3] など) を型 'ProductRepository.ViewModel.ProductViewModel' に逆シリアル化できません。この型では正しく逆シリアル化するために JSON オブジェクト ({"name":"value"} など) が必要です。

このエラーを修正するには、JSON を JSON オブジェクト (例: {"name":"value"}) に変更するか、逆シリアル化された型を配列または List のようなコレクション インターフェイス (ICollection、IList など) を実装する型に変更します。 JSON 配列から逆シリアル化されます。JsonArrayAttribute を型に追加して、強制的に JSON 配列から逆シリアル化することもできます。

パス ''、行 1、位置 1。

これについて誰か助けてもらえますか、つまり、この文字列をどのように解析できますか?

4

1 に答える 1

0

JSON.stringifyのように外側に使用します。

var frm = $("#formUpdate");

var productWindow = $("#ProductWindow").data("kendoWindow");
productWindow .refresh({            
       url: "../../Product/UpdateProduct",
       data: JSON.stringify({ model: frm.serializeArray()})
});
于 2013-10-21T06:28:35.973 に答える