Saltar al contenido

Pasar C# ASP.NET array a JavaScript array

Hola, hemos encontrado la respuesta a lo que andabas buscando, has scroll y la obtendrás un poco más abajo.

Solución:

serializarlo con System.Web.Script.Serialization.JavaScriptSerializer clase y asignar a javascript var

muestra ficticia:

<% var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); %>
var jsVariable = <%= serializer.Serialize(array) %>;

Esto es para complementar la respuesta de zerkms.

Para pasar datos a través de las barreras del idioma, necesitaría una forma de representar los datos como un string mediante la serialización de los datos. Uno de los métodos de serialización para JavaScript es JSON. En el ejemplo de zerkms, el código se colocaría dentro de una página aspx. Para combinar su ejemplo y el tuyo en una página aspx, tendrías,

<%
    int[] numbers = new int[5];
    // Fill up numbers...

    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
%>

en algún lugar más adelante en la página aspx


Sin embargo, esta respuesta asume que está generando JavaScript desde la carga de la página inicial. Según los comentarios en su publicación, esto podría haberse hecho a través de AJAX. En ese caso, haría que el servidor respondiera con el resultado de la serialización y luego lo deserializaría en JavaScript usando su marco favorito.

Nota: Tampoco marque esto como una respuesta ya que quería resaltar la sintaxis para aclarar otra respuesta.

Puede usar ClientScript.RegisterStartUpScript para inyectar javascript en la página en Page_Load.

Aquí hay un enlace a la referencia de MSDN: http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx

Aquí está el código en Page_Load:

  List tempString = new List();
  tempString.Add("Hello");
  tempString.Add("World");

  StringBuilder sb = new StringBuilder();
  sb.Append("");

  ClientScript.RegisterStartupScript(this.GetType(), "TestArrayScript", sb.ToString());

Notas: Use StringBuilder para construir el script string ya que probablemente será largo.

Y aquí está el Javascript que verifica el inyectado array “testArray” antes de poder trabajar con él:

if (testArray)

  // do something with testArray

Hay 2 problemas aquí:

  1. Algunos consideran esto intrusivo para que C# inyecte Javascript

  2. Tendremos que declarar el array en un contexto mundial

Si no puede vivir con eso, otra forma sería hacer que el código C# guarde el Array en View State, luego haga que JavaScript use PageMethods (o servicios web) para volver a llamar al servidor para obtener ese View State objeto como un array. Pero creo que puede ser excesivo para algo como esto.

valoraciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *