2010-10-13 18 views
3

我的页面上有一个ListBox。我正在对C#函数进行AJAX调用,并且需要传递所选项目的值。下面是我有:被传递到C#函数看起来像解析C#中的jQuery序列化数据#

$('#btnSubmit').click(function() { 
    $.ajax({ 
     type: "POST", 
     url: 'Default.aspx/GetSelectedValues', 
     data: '{selectedValues: ' + $('#lbItems').serialize() + '}', 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: OnSuccess 
    }); 
}); 

<select id="lbItems" multiple="multiple"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">Three</option> 
    <option value="4">Four</option> 
    <option value="5">Five</option> 
</select> 


[System.Web.Services.WebMethod] 
public static string GetSelectedValues(string selectedValues) 
{ 
    // 
} 

数据:

lbItems=1&lbItems=3&lbItems=5 

是否有任何内置的C#功能,可以反序列化,很容易,将这些值转换成某种排列?或者,也许有更好的方式从jQuery传递数据?

回答

2

如果传递的参数作为JSON,.NET will automatically deserialize the JSON for you

+0

这实际上是我首选的方法,但我不知道如何通过AJAX调用传递值数组(在这种情况下,所选选项的值)。我有一个关于此前的帖子:http://stackoverflow.com/questions/3926098/passing-an-array-of-values-in-an-asp-net-jquery-ajax-post。如果您知道使用JSON的方式,我很乐意看到一个示例。 – Steven 2010-10-13 20:22:10

+0

我在另一个问题上回答了,因为那里的话题更多。 – 2010-10-13 21:33:16

+0

太棒了,谢谢。 – Steven 2010-10-14 14:54:21

2

这种类型的格式实际上很容易用字符串类'拆分功能来解析。

只需使用string.Split和&符号即可得到一个字符串数组,它是您的各个参数。然后将这些字符串中的每一个划分为等号,以得到一个两元素数组,其中元素0是var名称,元素1是值。

代码示例:

string data = "lbItems=1&lbItems=3&lbItems=5"; 

    string[] items = data.Split(new char[]{'&'}); 

    foreach (string item in items) 
    { 
     string[] vals = item.Split(new char[]{'='}); 
     Console.WriteLine(vals[0] + ": " + vals[1]); 
    } 
+1

每一个名称 - 值对都将被URL编码,所以你也必须处理。 – 2010-10-13 20:16:34