簡體   English   中英

將c#數組傳遞給java腳本

[英]passing c# array to java script

我在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]
}]       

一種非常簡單的方法是使用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
        }];

在這里稍微改變你的問題......

不要操作已經存在的腳本,而是考慮構造整個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);

你需要以某種方式將數組傳遞給客戶端(tha javascript部分):

我建議對頁面發出一個ajax請求,它將返回序列化數組,或者@ Blade0rz建議,將序列化字符串直接輸出到頁面。 要將數組序列化為JSON格式,您可以調用JavaScriptSerializer類的方法:

更多關於它在這里

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>

聲明一個HiddenField

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

在你的javascript中將它的值設置為后面的代碼中的array.Tostring()

    var h = document.getElementById('myHiddenField');
    //Should give you an array of strings that you can cast to integers 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM