Passer c # array au script java

J'ai un tableau dans ma page_load dans c # que je veux accéder au script java mais je ne sais pas comment faire …

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

Maintenant, je souhaite accéder en javascript au lieu de données –

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

Un moyen très simple est d'utiliser la classe JavaScriptSerializer pour transformer votre objet C # en 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 }]; 

Changer votre problème un peu ici …

Au lieu de manipuler un script déjà existant, envisagez de construire tout le bloc de chaîne javascript, puis utilisez 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); 

Vous devriez passer le tableau au côté client (la partie javascript) en quelque sorte:

Je suggérerais de faire une requête ajax sur une page, qui renverrait le tableau sérialisé ou comme suggéré @ Blade0rz, pour afficher la chaîne sérialisée directement sur la page. Pour sérialiser le tableau sur un format JSON, vous appelez les méthodes de la classe JavaScriptSerializer:

Plus ici ici

Déclarer un champ caché

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

Définissez sa valeur sur votre array.Tosttring () dans le code derrière Ensuite, dans votre javascript

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

C # code derrière:

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

Essayez ce code:

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