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

ASP.NET后端数组传递到JavaScript出现System.String[]该如何解决

问题原因

直接在ASPX页面输出<%= myArray %>时,.NET会自动调用数组对象的ToString()方法,字符串数组的默认ToString()返回值是固定字符串System.String[]。你给onclick事件传参的时候还在外层套了单引号,最终传到JS函数里的就是"System.String[]"这个普通字符串,你取索引[1]自然得到的是字符串的第二个字符y,和你预期的数组完全无关。

实现方案

核心逻辑是把后端数组序列化为符合JS语法的JSON格式字符串,直接输出到前端即可被识别为原生JS数组:

  • 后端改造:把数组序列化为JSON字符串,公开为页面可访问的公共变量
' 代码文件顶部导入序列化所需命名空间
Imports System.Web.Script.Serialization

' 原有数组定义
Public myArray (5) As String
' 新增公共JSON字符串变量
Public myArrayJson As String

myArray(1) = "A1"
myArray(2) = "A2"
myArray(3) = "A3"
myArray(4) = "A4"
myArray(5) = "A5"

' 执行序列化
Dim jsSerializer As New JavaScriptSerializer()
myArrayJson = jsSerializer.Serialize(myArray)

如果项目里已经引用了Newtonsoft.Json,也可以用它序列化,代码更简洁:

Imports Newtonsoft.Json

' 序列化代码替换为
myArrayJson = JsonConvert.SerializeObject(myArray)
  • 前端页面改造:输出JSON字符串时不要外层加引号,JSON本身就是合法的JS字面量
<button type="button" onclick="myJava(<%= myArrayJson %>);">Search</button>
  • JS代码无需修改,运行后alert(myArray[1])即可得到预期的A1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:36:04