将JS数组={}发送到C#(WebMethod)
本文关键字:WebMethod 数组 JS | 更新日期: 2023-09-27 17:59:40
实际上,我在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()。