无法使用 PageMethods 将多维数组传递到服务器端 -Jquery/C#

Can't pass multidimensional array to server side with PageMethods -Jquery/C#

我的问题是这样的:How To Pass a MultiDimensional Array from Javascript to server using PageMethods in ASP.Net

我正在尝试做同样的事情,但解决方案对我不起作用,我很困惑。他说 JSON.stringify 有效,但它使我的对象数组成为一个完整的 string。我不能使用 string[,]List<string> 作为参数类型。如果我不使用 JSON.stringify 我可以传递 List<object> 类型的数据。但我无法在 C# 中获取值。所以我需要一些帮助。 基本上; 我需要将我的多维数组传递给 C#,并且我必须在循环中获取值。所以需要一些建议。这是我的代码:

Jquery:

var fixedQuestions = $(".questId").map(function () {
    return { group:$(this).closest('li').attr('id') , id:$(this).text() };
}).get();
var test1 = JSON.stringify(fixedQuestions);
PageMethods.InsertAuditParams(test1);

这是我的 C# Web 方法:

[WebMethod]
public static void InsertAuditParams(string[,] testarray)
{
    for(int i = 0; i < testarray.Length; i++)
    {
        string value1 = testarray[i, 0].ToString();
    }
}

这是我在 firebug 控制台上遇到的错误:

...无法将类型 'System.String' 的对象转换为类型 'System.String[,]'

提前致谢。

我已经解决了。这是关于传递的集合类型。它看起来像 dictionary 在 c# 中键入,这就是我无法获取值的原因。所以我创建了一个 js 函数来根据需要操作数据。这是新手的解决方案;

function ConvertToArray(objectData)
    {
        var multiArray = [];
        for (var key in objectData) { multiArray.push([objectData[key].num,                
        objectData[key].text]); }
        return multiArray;
    }
var passFixed = ConvertToArray(fixedQuestions);

PageMethods.InsertAuditParams(passFixed);

这是在 c# 中获取值的方法:

public static void InsertAuditParams(List<object> fixed_q)
{
    foreach (object[] item in fixed_q)
        {
            string value1 = item[0].ToString();
            string value2 = item[1].ToString();
        }
}