3

サーバー側でリストを作成します

List<object> data = new List<object>();

for (var j = 0; j < items.Count(); j++) 
{ 
    var temp = groups.Where(customfilter); 
    data.Add(Html.Raw(Json.Encode(temp)));
}

System.Web.Script.Serialization.JavaScriptSerializer serializer = new 
    System.Web.Script.Serialization.JavaScriptSerializer(); 

var serializedData = serializer.Serialize(data);

Javascript 内では、以下はプリミティブ型以外では機能しません。

var localData = @data;

これはエラーです:

System.Collections.Generic.List`1[System.Object]

私は何が欠けていますか?

4

2 に答える 2

1

あなたが投稿した C# コードはコントローラー アクション メソッドであると想定しています。

コントローラー メソッドが JsonResult を返すようにし、JSON ライブラリを使用して逆シリアル化する必要があります。

何かのようなもの

public class MyController: Controller
{
    public JsonResult MyAction ()
    {
        var data = new List<object>();
        for (var j = 0; j < items.Count(); j++) 
        { 
            var temp = groups.Where(customfilter); 
            data.Add(temp);
        }
        return Json (data, JsonRequestBehavior.AllowGet);
    }
}

リストにアイテムを追加するときに、すべてのアイテムをシリアル化する必要がないことに注意してください。

クライアント側から、メソッドを呼び出して、結果をリストに逆シリアル化できます。次のように実行できます。

$.ajax ({ url:'/My/MyAction'}).done (function (data) {
    var myList = JSON.parse (data);
});

編集:

いくつかのテストの後、次のようにしてデータにアクセスできることがわかりました。

var myList = data;

理由はわかりませんが、「データ」は配列として直接送信されます。

それが役に立てば幸い!

于 2013-08-21T10:54:03.640 に答える
0

まず、このリンクを確認してくださいhttp://james.newtonking.com/pages/json-net.aspx

2番

var temp = groups.Where(customfilter).ToList(); 

リストにキャストする場所を使用する場合、またはクエリオブジェクトのようなものになる場合*(正確なタイプは覚えていません)または、1つのオブジェクトを選択したい場合は、groups.FirstOrDefaultを試してください

三番

 data.Add(temp);

シリアライザーは、それを変換するために彼の仕事をします。

于 2013-08-21T06:26:05.847 に答える