C# 是否可以从ajax调用中获取webmethod参数的arraylist?

C# 是否可以从ajax调用中获取webmethod参数的arraylist?,c#,jquery,ajax,arraylist,C#,Jquery,Ajax,Arraylist,我在C#webforms中为我的web应用程序创建了一个webmethod,该方法由Ajax调用调用 [System.Web.Services.WebMethod] public static string DataExport(ArrayList arr) { } 如何从ajax调用的“数据”字段填充方法DataExport的ArrayList 现在,我的Ajax非常简单: $.ajax({ type: "POST",

我在C#webforms中为我的web应用程序创建了一个webmethod,该方法由Ajax调用调用

    [System.Web.Services.WebMethod]
    public static string DataExport(ArrayList arr)
    {

    }
如何从ajax调用的“数据”字段填充方法DataExport的ArrayList

现在,我的Ajax非常简单:

 $.ajax({
                type: "POST",
                async: true,
                url: "Default.aspx/DataExport",
                data: '{ arr:"' + test + '"}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) { },
                error: function (response) { }
            });
数据字段中的测试是JSON。我做了几个测试,如果我用字符串替换ArrayList,得到一个带有JSON内联的字符串,它就会工作


您知道如何修改数据以填充webmethod的类型ArrayList吗?

您发布到服务器的数据不是数组,而是具有单个属性的对象
arr
。属性arr可能是一个数组。。。我们无法从你的片段中分辨出来

您实现的WebMethod应该支持JSON反序列化,但是您需要发布的JSON和WebMethod参数类型

  • 创建一个表示列表中一个项目的对象(例如,
    Person
  • ArrayList
    切换到
    List
    (例如
    List
  • 更新javascript以发布
    Person
    对象数组
为了从这里到那里,我建议首先编写代码以接受单个实例,然后扩展代码以接受集合并发布javascript数组
[]

public class Person {  public string Name { get; set; } }
public void DataExport(Person item) {

}

var postData =  '{ "Name": "Some Person" }';
$.ajax(url, postData);

要发布到服务器的数据不是数组,而是具有单个属性的对象
arr
。属性arr可能是一个数组。。。我们无法从你的片段中分辨出来

您实现的WebMethod应该支持JSON反序列化,但是您需要发布的JSON和WebMethod参数类型

  • 创建一个表示列表中一个项目的对象(例如,
    Person
  • ArrayList
    切换到
    List
    (例如
    List
  • 更新javascript以发布
    Person
    对象数组
为了从这里到那里,我建议首先编写代码以接受单个实例,然后扩展代码以接受集合并发布javascript数组
[]

public class Person {  public string Name { get; set; } }
public void DataExport(Person item) {

}

var postData =  '{ "Name": "Some Person" }';
$.ajax(url, postData);

您可以在web方法中接受JSON对象作为字符串,然后使用通用的JsonConvert.DeserializeObject方法应用必要的反序列化

var test = JSON.stringify(valuesToBePassed);

$.ajax({
            type: "POST",
            async: true,
            url: "Default.aspx/DataExport",
            data: test,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) { },
            error: function (response) { }
        });
然后使用以下代码段提取Web方法中的对象:

var list = JsonConvert.DeserializeObject<List<MyObjectType>>(json);

您可以在web方法中接受JSON对象作为字符串,然后使用通用的JsonConvert.DeserializeObject方法应用必要的反序列化

var test = JSON.stringify(valuesToBePassed);

$.ajax({
            type: "POST",
            async: true,
            url: "Default.aspx/DataExport",
            data: test,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) { },
            error: function (response) { }
        });
然后使用以下代码段提取Web方法中的对象:

var list = JsonConvert.DeserializeObject<List<MyObjectType>>(json);

您的数据
{arr:“test”}
是一个对象。我可以想象,只有当您的数据以json数组的形式出现时,您的计划才会起作用,例如
[“test1”、“test2”、“test3”]
@RicoHerlt我的数据是这样的:[{“test1”:“test11”}、{“test2”:“test22”}、{“test3”:“test33”}您的数据
{arr:“test}
是一个对象。我可以想象,只有当您的数据以json数组的形式出现时,您的计划才会起作用,例如
[“test1”、“test2”、“test3”]
@RicoHerlt我的数据是这样的:[{“test1”:“test11”}、{“test2”:“test22”}、{“test3”:“test33”}]