我有一个基于已检查项目在javascript中创建的数组。一旦创建了这个数组(整数数组),我该如何将它传递给c#?制作一个隐藏的文本框并且只是添加字符串中的所有项目并在c#中拆分该字符串会更容易吗?例如,如果行1,3,7的复选框被单击,则我的数组为{1,3,7}。再一次,有一个隐藏的文本框可以更容易获得字符串“1,3,7”,我只是从文本框中获取字符串?
答案 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代码生成/解析混合在一起,否则你最终会得到一个应用程序的野兽来调试。