2012-08-14 65 views
1

我有一個字符串列表,我發送到部分視圖的服務器上。將列表<string>轉換爲客戶端上的Json數組ASP.NET MVC

List<string> list = new List<string>(); 
list.Add("1"); 
list.Add("2"); 

在客戶端,我轉換列表JSON是這樣的:

var stringList = @(Html.Raw(Json.Encode(this.Model.StringList))); 
alert(stringList); 

警報的答覆是:1,2,我應該得到["1","2"]

任何線索如何處理這個?

非常感謝。

+2

轉到您的網絡瀏覽器控制檯,並輸入'alert([「1」,「2」])'。按Enter鍵。它會提醒'1,2',因爲'[「1」,「2」]。toString()===「1,2」'。你應該嘗試'console.log(stringList)'並且看看它到底是什麼 - 也許你已經有了你想要的東西。 – 2012-08-14 20:03:54

回答

4

你要求的是一個簡單而簡單的數組,而不是json。

這且不說,只是追加它周圍括號:

var stringList = [@(Html.Raw(Json.Encode(this.Model.StringList)))]; 
alert(stringList); 

這適用於數字,但如果你打算用實際字符串值使用(如文字或等),你需要不同的方法。目前還不清楚你是否打算將這個數字用作字符串作爲你的例子。

+0

反對,沒有評論,理由或更好的答案? – 2013-06-25 04:14:57

+0

我不明白你爲什麼要讓他手動添加方括號。 Json.Encode已經添加了方括號。 – 2014-02-05 22:06:38

+0

不,在這種情況下,Json.Encode輸出逗號分隔的值列表,不包含括號。只有在被編碼的對象是一個屬性爲對象列表的東西時纔會輸出括號。這是一年前創建的較老的答案,新版本的MVC可能會改變這種行爲。 – 2014-02-05 22:24:06