将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中获取这些值,我该怎么办?对此有任何见解都将不胜感激!感谢

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

首先定义一个模型,该模型将表示您正在处理的数据,以便您使用强类型并消除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()。