簡體   English   中英

在Javascript中訪問C#List

[英]Access C# List inside Javascript

在服務器端,我創建一個列表

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]

我錯過了什么?

我假設你發布的C#代碼是一個Controller動作方法。

您需要讓您的控制器方法返回一個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;

不確定原因,但“數據”直接作為數組發送。

希望能幫助到你!

首先請查看此鏈接http://james.newtonking.com/pages/json-net.aspx

第二

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

如果您使用將其轉換為列表的位置,或者它將類似於查詢對象*(我不記得確切類型)或者如果要選擇一個對象,請嘗試groups.FirstOrDefault

第三

 data.Add(temp);

Serializer將完成他的工作來轉換它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM