【问题标题】:Parse jQuery serialized data in C#在 C# 中解析 jQuery 序列化数据
【发布时间】:2010-10-13 20:06:53
【问题描述】:

我的页面上有一个 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 传递数据?

【问题讨论】:

    标签: c# asp.net jquery ajax


    【解决方案1】:
    【解决方案2】:

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

    【讨论】:

    • 这实际上是我的首选方法,但我不知道如何通过 AJAX 调用传递一组值(在本例中为所选选项的值)。我之前有一篇关于此的帖子:stackoverflow.com/questions/3926098/…。如果您知道使用 JSON 的方法,我很乐意看到一个示例。
    • 我回答了另一个问题,因为那里的话题更重要。
    【解决方案3】:

    这种格式其实用字符串类的Split函数很容易解析。

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

    【讨论】:

    • 每个名称-值对都将进行 URL 编码,因此您也必须处理它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2011-04-11
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-25
    相关资源
    最近更新 更多