2015-07-20 85 views
0

我建立一個jQuery UI自動完成列表,並輸入需要在以下格式:將ASP.NET Dict轉換爲javascript?

var data = [ 
     { value: "AL", label: "Alabama" }, 
     { value: "AK", label: "Alaska" }, 
     { value: "AZ", label: "Arizona" }, 
     { value: "AR", label: "Arkansas" }, 
     { value: "CA", label: "California" },]; 

現在我檢索來自ASP.Net我有一個鍵值對列表看起來像數據(VB .NET)

List(Of KeyValuePair(Of Integer, String)) 

現在如何將ASP.NET列表轉換爲EXACT格式作爲值,標籤對格式以提供自動完成?

+0

'名單<詞典<字符串,字符串>>數據' – tymeJV

回答

1

JavaScript值是一組具有「值」和「標籤」屬性的對象數組,它與您的List(Of KeyValuePair(Of Integer, String))非常接近,除了屬性名稱不匹配。因此,您所需要做的就是將每個KeyValuePair轉換爲具有正確屬性名稱的對象,然後將結果序列化爲JSON(將values替換爲您的實際列表)。

Dim values = New List(Of KeyValuePair(Of Integer, String))() 
values.Add(New KeyValuePair(Of Integer, String)(1, "A")) 
values.Add(New KeyValuePair(Of Integer, String)(2, "B")) 
values.Add(New KeyValuePair(Of Integer, String)(3, "C")) 
values.Add(New KeyValuePair(Of Integer, String)(4, "D")) 

Dim json = New JavaScriptSerializer().Serialize(
    values.Select(Function(x) New With { .value = x.Key, .label = x.Value }) 
) 

json將是:

[{"value":1,"label":"A"},{"value":2,"label":"B"},{"value":3,"label":"C"},{"value":4,"label":"D"}] 

我不知道你是如何進入你的JavaScript這一點,但也許是這樣的:

var data = JSON.parse('<%= json %>'); 
+0

這對我很有用,非常感謝。不幸的是我沒有足夠的聲望來評價你。 把它轉換成javascript我用 var jsonObj = <%= jsonLIST%>; 謝謝! –

+0

@ RaySun你應該能夠接受答案(答案旁邊的複選標記),這也會增加你的聲望。 – Mark