使用c#将数组值批量传递给后面的代码

时间:2016-07-06 03:11:43

标签: c# jquery asp.net arrays ajax

我需要将值传递给从客户端到服务器端的代码,我该怎么做呢

1 个答案:

答案 0 :(得分:0)

数据发送通常需要是一个键值对。我不认为发送字符串会起作用。数据变量通常需要是一个对象数组,每个对象都有两个键:名称 我通常有两种方法来做这个

方法1: 此方法将整个数组序列化为一个字符串(类似于您正在尝试的字符串)并将其发送。这样做的一个很大的缺点是,如果数组太长,它会发送一个非常长的字符串,可能超过限制(然后需要从web配置增加限制)。然而,这样做的一大优点是可以直接将对象序列化为c#对象。

方法是将您的行data: JSON.stringify({ arr: values })更改为data: [{name:"values", value:JSON.stringify(values)}],然后访问c#中的字符串并对其进行反序列化。 在c#中,你需要有这样的代码:

  

JavaScriptSerializer js = new JavaScriptSerializer();为MyObject   object = js.Deserialize(Request.Params(' values'));

您现在可以使用MyObject类型的对象。请注意,为了能够使用它,您需要c#对象和js对象具有完全相同的格式。请注意,在这种情况下,MyObject将是一个数组,因此需要将其替换为以下内容:object = js.Deserialize<string[]>(Request.Params('values'))

方法2: 此方法可以将数组中的每个js项作为单独的项并将其发送。在js代码中,在 $。ajax({行)之前添加var i = 0;。然后将data: JSON.stringify({ arr: values })替换为data: values.map(v => ({name: i++, value: v}))

现在在您的c#代码中,您可以将数组的每个元素作为Request.Params("0")Request.Params("1")等等进行访问...