如何将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>"); } } } }
注意事项
- 确保项目已引用
System.Web.Extensions程序集(WebForms项目通常默认已包含),否则JavaScriptSerializer会无法识别。 - JSON序列化会自动处理数组中的特殊字符转义,无需额外处理。
OnClientClick事件会在表单提交前触发,保证隐藏控件在提交时已携带数组数据。
内容的提问来源于stack exchange,提问作者rorona
相关产品推荐
相关产品推荐

