Meu problema é exatamente isso: Como passar uma matriz multidimensional do Javascript para o servidor usando PageMethods no ASP.Net
Estou tentando fazer a mesma coisa, mas a solução não funciona para mim e estou confuso. Ele diz JSON.stringify
funciona, mas torna minha matriz de objetos um todo string
. Eu não posso usar string[,]
ou List<string>
para o tipo de parâmetro. Se eu não usar JSON.stringify
eu posso passar dados com List<object>
tipo. Mas não consegui obter valores em c #. Então, preciso de ajuda. Basicamente; Eu preciso passar minha matriz multidimensional para c # e devo obter valores com loop. Então, preciso de alguns conselhos. Aqui está o meu código:
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);
e aqui está o meu método da Web c #:
[WebMethod]
public static void InsertAuditParams(string[,] testarray)
{
for(int i = 0; i < testarray.Length; i++)
{
string value1 = testarray[i, 0].ToString();
}
}
e este é o erro que recebo no console do firebug:
... Não é possível converter o objeto do tipo "System.String" para o tipo "System.String [,]"
Desde já, obrigado.
Respostas:
0 para resposta № 1Eu o resolvi. Era sobre o tipo de coleção passado. Era como se dictionary
digite c # e é por isso que não consegui obter valores. Então, eu criei uma função js para manipular os dados como eu quero. Aqui está a solução para os novatos;
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);
e é assim que se obtém valores em 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();
}
}