在C#中解析jQuery序列化数据

时间:2010-10-13 20:06:54

标签: c# asp.net jquery ajax

我的页面上有一个ListBox。我正在对C#函数进行AJAX调用,我需要传递所选项的值。这就是我所拥有的:

$('#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)
{
    //
}

传递给C#函数的数据如下所示:

lbItems=1&lbItems=3&lbItems=5

是否有可以轻松反序列化的内置C#函数,将值转换为某种数组?或者也许有更好的方法从jQuery传递数据?

3 个答案:

答案 0 :(得分:6)

答案 1 :(得分:2)

这种类型的格式实际上很容易用字符串类'Split function。

进行解析

只需使用带有&符号的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]);
    }

答案 2 :(得分:2)

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