将JavaScript数组传递给C#方法

5
我有一个由JavaScript基于选中项创建的数组。一旦这个数组被创建(整数数组),我该如何将它传递给C#?是否更容易创建一个隐藏的文本框,只需将所有项添加到一个字符串中,在C#中再分割该字符串?例如,如果行1、3、7的复选框被选中,我的数组是{1,3,7}。同样,是否更容易在一个隐藏的文本框中获取字符串"1,3,7",然后从文本框中获取字符串?

C# 中有解码 JSON 的函数,对吧?数组也是 JSON。https://dev59.com/WXM_5IYBdhLWcg3wiDyA - kirilloid
3个回答

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[] myInts = Array.ConvertAll(serverSideArray, int.Parse); 

2
我会使用ajax post方法将数组传递给你的C#代码后端,通过调用web方法实现。

0
如果您为每个复选框设置相同值的“名称”属性,则会收到逗号分隔的列表:
<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"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接