4

我在 c# 的 page_load 中有一个数组,我想在 java 脚本中访问它,但不知道该怎么做。

float [] energyArray = new float[count];
for (int i = 0; i < count; i++)
{
    energyArray[i] = energyObj[i].FwdHr;
}

现在我想用 javascript 代替数据访问-

series: [{
    name: 'Tokyo',
    data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
}]       
4

5 回答 5

8

一种非常简单的方法是使用JavaScriptSerializer类将 C# 对象转换为 JSON:

C#

float [] energyArray = new float[count];
for (int i = 0; i < count; i++)
   {
       energyArray[i] = energyObj[i].FwdHr;
   }

Javascript:

var dataArray = <%=new JavaScriptSerializer().Serialize(energyArray);%>;
var series = [{
            name: 'Tokyo',
            data: dataArray
        }];
于 2013-05-30T10:23:47.153 回答
3

在这里稍微改变你的问题......

考虑构建整个 javascript 字符串块,然后使用Page.RegisterClientScriptBlock.

http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerclientscriptblock.aspx

int[] yourArray = new int[] { 1, 2, 3 };
string arrElements = string.Join(",", yourArray.Select(x => x.ToString()).ToArray());
string strJs = string.Format("var yourArray=[{0}]", arrElements);
RegisterClientScriptBlock("Test", strJs);
于 2013-05-30T10:21:45.463 回答
0

您需要以某种方式将数组传递给客户端(即 javascript 部分):

我建议向页面发出 ajax 请求,该请求将返回序列化数组,或者按照@Blade0rz 的建议,将序列化字符串直接输出到页面。要将数组序列化为 JSON 格式,您可以调用 JavaScriptSerializer 类的方法:

更多信息在这里

于 2013-05-30T10:23:40.887 回答
0

后面的 C# 代码:

float [] energyArray = new float[count];
 public JavaScriptSerializer javaSerial = new JavaScriptSerializer();

试试这个代码:

<script>
var a = <%= this.javaSerial.Serialize(this.energyArray) %>;
for (var i = 0; i < a.length; i++) {
        console.log(a[i]);
    }
 </script>
于 2013-05-30T10:25:48.477 回答
0

声明一个隐藏字段

    <asp:HiddenField id="myHiddenField" runat="server"

在后面的代码中将它的值设置为你的 array.Tostring() 然后在你的javascript中

    var h = document.getElementById('myHiddenField');
    //Should give you an array of strings that you can cast to integers 
于 2013-05-30T10:25:56.900 回答