You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JS数组传递到C# WebForms?(尽量不使用Ajax)

实现JS数组传递到WebForms后台(非Ajax方式)

核心思路

借助WebForms的表单提交机制,将JS数组序列化为JSON字符串存入隐藏控件,后台读取后反序列化为数组再进行处理。

修改后的代码实现

前端页面代码

<head runat="server">
    <title></title>
    <script>
        const array1 = ["Saab", "Volvo", "BMW"];
        
        // 按钮点击时把数组转成JSON存入隐藏控件
        function passArrayToServer() {
            const arrayJson = JSON.stringify(array1);
            document.getElementById('hfArray').value = arrayJson;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <!-- 新增隐藏控件用于存储数组的JSON字符串 -->
            <asp:HiddenField ID="hfArray" runat="server" />
            <!-- 绑定客户端点击事件,提交前完成数组赋值 -->
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click1" OnClientClick="passArrayToServer();" />
        </div>
    </form>
</body>

后台C#代码

using System.Web.Script.Serialization; // 需要引入该命名空间

public partial class JSPassWebForm : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click1(object sender, EventArgs e)
    {
        string arrayJson = hfArray.Value;
        if (!string.IsNullOrEmpty(arrayJson))
        {
            // 将JSON字符串反序列化为C#字符串数组
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            string[] array1 = serializer.Deserialize<string[]>(arrayJson);
            
            // 遍历输出数组内容
            foreach (string item in array1)
            {
                Response.Write(item + "<br>");
            }
        }
    }
}

注意事项

  1. 确保项目已引用System.Web.Extensions程序集(WebForms项目通常默认已包含),否则JavaScriptSerializer会无法识别。
  2. JSON序列化会自动处理数组中的特殊字符转义,无需额外处理。
  3. OnClientClick事件会在表单提交前触发,保证隐藏控件在提交时已携带数组数据。

内容的提问来源于stack exchange,提问作者rorona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 17:40:31