将JS Array = {}发送到C#(WebMethod)

实际上我在JS端声明了一个数组,如下所示:

var benefArray = {}; var benefCount = 0; var benefNome = $('#txtBenefNome').val(); var benefDataNasc = $('#txtBenefDataNasc').val(); var benefGrauParent = $('#txtBenefGrauParent').val(); benefCount++; benefArray[benefCount] = new Array(benefNome, benefDataNasc, benefGrauParent); //Ajax Sender function sendAjax(url, parametros, sucesso) { $.ajax({ type: "POST", url: url, data: parametros, contentType: "application/json; charset=utf-8", dataType: "json", success: sucesso }); }; sendAjax("Client.aspx/AddClient", "{benefArray: \"" + benefArray + "\"}", function (msg) { var retorno = msg.d; alert(retorno); }); 

在我的C#WebMethod方面,我有:

  [WebMethod] public static string AddClient(object benefArray) { var t = benefArray; } 

我试图从Javascript获取这些值,我必须做什么? 任何有关这方面的见解将不胜感激! 谢谢

首先定义一个代表您正在使用的数据的模型,以便您使用强类型并消除AddClient方法中的object丑陋:

 public class Benef { public string Nome { get; set; } public string DataNasc { get; set; } public string GrauParent { get; set; } } 

然后让你的web方法采用这个模型的数组:

 [WebMethod] public static string AddClient(Benef[] benefs) { // TODO: process ... // by the way as a result you could also return a strongly // typed model and not only strings // which could be easily manipulated on the client side return "some result"; } 

在客户端上,您将定义一组参数:

 var parameters = { benefs: [ { Nome: $('#txtBenefNome').val(), DataNasc: $('#txtBenefDataNasc').val(), GrauParent: $('#txtBenefGrauParent').val() } ] }; $.ajax({ type: 'POST', url: 'Client.aspx/AddClient', data: JSON.stringify(parameters), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function(result) { alert(result.d); } }); 

就我在这里使用的JSON.stringify方法而言,它在现代浏览器中是原生的。 但是,如果您打算支持旧浏览器,建议将json2.js脚本包含在您的页面中。

如果您想避免设置课程,也可以这样做

 [WebMethod] public static string AddClient(Hashtable[] benefs) { var n = benefs["Nome"].ToString(); return "some result"; } 

其他类型需要.ToString()然后Parse()。