将 C# 数组传递给 Javascript

Posted

技术标签:

【中文标题】将 C# 数组传递给 Javascript【英文标题】:Pass C# Array To Javascript 【发布时间】:2013-02-03 05:49:31 【问题描述】:

将 C# 数组传递给 javascript 变量的最佳方法是什么?

我有示例代码,但是这个从 C# 数组中逐个字符返回,我想以正常方式返回,就像在 javascript 数组中逐字一样;

后面的C#代码:

 public string[] names =  "John", "Pesho", "Maria";
 public JavaScriptSerializer javaSerial = new JavaScriptSerializer();

javascript代码:

 <script>
    var a = '<%= this.javaSerial.Serialize(this.names) %>';
    for (var i = 0; i < a.length; i++) 
        console.log(a[i]);
    
 </script>

此脚本以单个字符数组的形式返回“名称”数组中的所有单词。我想以正常方式返回,例如 ["John"] ["Pesho"] ...

将 C# 数组传递给 javascript 的最佳方法是什么?

当我运行此代码时,我会在 Chrome 浏览器的控制台中看到以下内容:

[ Profile.aspx:44
" Profile.aspx:44
v Profile.aspx:44
a Profile.aspx:44
l Profile.aspx:44
e Profile.aspx:44
r Profile.aspx:44
i Profile.aspx:44
" Profile.aspx:44
, Profile.aspx:44
" Profile.aspx:44
p Profile.aspx:44
e Profile.aspx:44
s Profile.aspx:44
h Profile.aspx:44
o Profile.aspx:44
" Profile.aspx:44
, Profile.aspx:44
" Profile.aspx:44
m Profile.aspx:44
a Profile.aspx:44
r Profile.aspx:44
i Profile.aspx:44
a Profile.aspx:44
" Profile.aspx:44
] 

【问题讨论】:

你的意思是一个字符串数组,比如["John", "Pesho", "Maria"] 我希望“a”变量等于 C#“names”数组 "这个脚本从单个字符数组中返回"names"数组中的所有单词"...你能告诉我们渲染了什么吗? 是的,我编辑了帖子。 不要在它周围加上引号。 【参考方案1】:

替换

var a = '<%= this.javaSerial.Serialize(this.names) %>';

var a = <%= this.javaSerial.Serialize(this.names) %>;

您将生成的 JSON 放入 javascript 字符串中,这将导致您的示例输出遍历 Serialize 调用的每个字符。

【讨论】:

还有一个问题。我看到“this.javaSerial.Serialize”返回字符串。这个“var a”如何接受数组? 它返回一个C# 字符串,当你这样做时&lt;%= ... %&gt; asp.net 会将字符串的内容输出到浏览器。【参考方案2】:

你的c#代码会返回一个字符串,你必须先用JSON.parse解析这个字符串,然后遍历它:

var a = JSON.parse('<%= this.javaSerial.Serialize(this.names) %>');
for (var i = 0; i < a.length; i++) 
    console.log(a[i]);

或者正如@Matthew 所说,不要在它周围加上引号,这样你就不必解析它。

【讨论】:

以上是关于将 C# 数组传递给 Javascript的主要内容,如果未能解决你的问题,请参考以下文章

将 C# 字符串数组传递给 C++

将 C# 数组传递给 C++ 向量

通过单声道将数组从 C++ 传递给 C#

将二维数组信息传递给 c# 中的方法

将 C# 3D 数组作为 1D 字节数组传递给 C++ 库

将 C# ASP.NET 数组传递给 Javascript 数组