使用 C# 将数组值批量传递到代码隐藏

本文关键字:代码 隐藏 数组 使用 | 更新日期: 2023-09-27 17:55:36

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

使用 C# 将数组值批量传递到代码隐藏

发送的数据通常需要是键值对。我不认为简单地发送一个字符串会起作用。数据变量通常需要是一个对象数组,每个对象有两个键:名称和我通常有两种方法可以做到这一点

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

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

JavaScriptSerializer js = new JavaScriptSerializer(); 我的对象 对象 = js。反序列化(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") 等等...