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

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

【问题讨论】:

标签: c# javascript arrays


【解决方案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"]
      

      【讨论】:

        猜你喜欢
        • 2010-10-23
        • 2013-05-25
        • 2013-02-03
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 2011-01-06
        • 2020-09-03
        相关资源
        最近更新 更多