在 WebMethod 中接收和操作通过 Ajax 发送的未知数量的 name/value

Receive and manipulate in a WebMethod an unknown number of name/value sent via Ajax

我想向 WebMethod 发送一个 Ajax post 和一些数据。在原始代码中我不知道有多少对数据,因为它们是动态的,但为了简化我在这个例子中只添加了两个数据:

$.ajax({
    url: 'dama-actions.aspx/UpdateDataAdvanced',
    type: "POST",
    data: "{data: {'one':'onevalue', 'two':'twovalue'}}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
    alert(data.d);
    }
});

然后,使用 WebMethod,我需要读取数据以了解所有 name/value 对。我尝试了很多方法,但都没有成功,lstItems 永远是空的。 我添加了一个 foreach 和一个计数器来查看列表是否已填满,但没有填满。

[WebMethod]
public static string UpdateDataAdvanced(object data)
{
    List<object> lstItems = new JavaScriptSerializer().ConvertToType<List<object>>(data);

    int counter = 0;

    foreach (string item in lstItems)
    {
        counter = counter + 1;
    }

    return counter.ToString();
}

最终用途是读取对偶并动态创建一个SQL语句来更新一个table。我知道如何为我的 SQL 语句操作数据,但此时我需要知道为什么我的 WebMethod 不收集数据。

谢谢你的帮助,请原谅我的英语不好。

只需将 'data' 参数的类型更改为 Dictionary<string, string>

public static string UpdateDataAdvanced(Dictionary<string, string> data)
{
    // Further code
}