2015-07-20 92 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