[英]passing array values in bulk to code behind using c#
我需要将值传递给从客户端到服务器端的代码后面,我该怎么做
发送的数据通常需要是一个键值对。 我认为仅发送字符串是行不通的。 数据变量通常需要是一个对象数组,每个对象都有两个键: name和value我通常有两种方式
方法1:该方法将整个数组序列化为一个字符串(类似于您尝试的字符串),并将其发送出去。 这样做的一个很大的缺点是,如果数组太长,它将发送一个很长的字符串,该字符串可能会超过限制(然后需要从Web配置中增加限制)。 但是,这样做的一大优点是您可以将对象直接序列化为ac#对象。
方法是将行data: JSON.stringify({ arr: values })
更改为data: [{name:"values", value:JSON.stringify(values)}]
,然后在c#中访问values字符串并反序列化它。 在C#中,您需要有类似以下的代码:
JavaScriptSerializer js =新的JavaScriptSerializer(); MyObject对象= js.Deserialize(Request.Params('values'));
现在,您可以使用类型为MyObject的对象。 请注意,为了能够使用它,您将需要c#对象和js对象具有完全相同的格式。 请注意,在这种情况下,MyObject将是某些东西的数组,因此需要将其替换为以下内容: object = js.Deserialize<string[]>(Request.Params('values'))
方法2:此方法可以将数组中的每个js项作为一个单独的项发送出去。 在js代码中,添加var i = 0;
在$ .ajax({行。然后将data: JSON.stringify({ arr: values })
替换为data: values.map(v => ({name: i++, value: v}))
。
现在,在您的C#代码中,您可以将数组的每个元素都访问为Request.Params("0")
, Request.Params("1")
,依此类推...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.