将javascript数组传递给c#方法

时间:2011-02-07 20:14:36

标签: c# javascript arrays

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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); 

答案 2 :(得分:0)

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

<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"]

答案 3 :(得分:0)

使用此类approach&amp;反序列化为int[]。其他如果您已经处理了javascript来连接它+如果您的要求稍后更改=更多javascript编码。

总的来说,尝试尽量不要将c#代码与javascript代码生成/解析混合在一起,否则你最终会得到一个应用程序的野兽来调试。