将 javascript 数组传递给 c# 方法

Posted

技术标签:

【中文标题】将 javascript 数组传递给 c# 方法【英文标题】:Pass a javascript array to a c# method 【发布时间】:2011-06-23 00:00:48 【问题描述】:

我有一个基于检查项目在 javascript 中创建的数组。一旦创建了这个数组(整数数组),我怎样才能将它传递给 c#?制作一个隐藏的文本框并在一个字符串中添加所有项目并在 c# 中将该字符串拆分会更容易吗?例如,如果第 1,3,7 行的复选框并单击,则我的数组为 1,3,7 。同样,如果有一个隐藏的文本框会更容易获取字符串“1,3,7”,而我只是从文本框中获取字符串?

【问题讨论】:

C#中有一个解码JSON的函数,不是吗?数组也是 JSON ***.com/questions/1334479/json-decoding-in-c 【参考方案1】:

我会使用 ajax post 将数组传递给你的 C# 代码到 web 方法。

【讨论】:

【参考方案2】:

这是将 JS 数组传递给代码隐藏文件的一种完全可以接受的方式。

只要确保你有一个输入控件,比如一个用 runat="server" 标记的隐藏字段,并将控件的值设置为 JS 数组的 .join(',') 的结果。您可能可以使用最初创建数组的 javascript 函数来执行此操作。

 var hiddenField = $get("<%= hdnFieldControl.ClientID %>");
 hiddenField.value = jsArray.join(',');

然后,您将在服务器上再次拆分控件的字符串值以回收您的数组。

var serverSideArray = hdnFieldControl.value.Split(new char[0]',');

关于这个方法的一个注意事项,它会产生一个字符串数组。如果你真的想要一个 int 数组,你可以将其转换为另一个步骤:

int[] myInts = Array.ConvertAll(serverSideArray, int.Parse); 

【讨论】:

【参考方案3】:

如果您为每个复选框指定一个具有相同值的“名称”属性,您将收到一个逗号分隔的列表:

<input type-"checkbox" name="whatever" value="1" />
<input type-"checkbox" name="whatever" value="3" />
<input type-"checkbox" name="whatever" value="7" />

然后在你的代码中:

string values = Request.Form["whatever"]

【讨论】:

以上是关于将 javascript 数组传递给 c# 方法的主要内容,如果未能解决你的问题,请参考以下文章

将 C# ASP.NET 数组传递给 Javascript 数组

将 C# ASP.NET 数组传递给 Javascript 数组

如何将在我的 Javascript 中创建的字符串数组传递给 C# 代码隐藏文件?

将数组从 JavaScript 传递到 C# 的最佳方法?

将javascript数组传递给servlet

将二维数组信息传递给 c# 中的方法