2011-02-07 16 views
5

Tengo una matriz que se crea en javascript en función de los elementos marcados. Una vez que se crea esta matriz (matriz de enteros), ¿cómo puedo pasar esto a C#? ¿Sería más fácil crear un cuadro de texto oculto y simplemente agregar todos los elementos en una cadena y simplemente dividir esa cadena dentro de C#? Por ejemplo, si las casillas de verificación para las filas 1,3,7 y hacen clic, mi matriz es {1,3,7}. De nuevo, ¿sería más fácil tener un cuadro de texto oculto que tenga la cadena "1,3,7" y acabo de obtener la cadena del cuadro de texto?Pasar una matriz de Javascript a un método C#

+0

¿Más fácil entonces qué? – epitka

+0

Hay una función para decodificar JSON en C#, ¿no? Array es un JSON también http://stackoverflow.com/questions/1334479/json-decoding-in-c – kirilloid

Respuesta

2

Pasaría la matriz a su código C# detrás de usar una publicación de AJAX en un método web.

0

Si das cada casilla una propiedad 'nombre' con el mismo valor, recibirá una lista separada por comas:

<input type-"checkbox" name="whatever" value="1" /> 
<input type-"checkbox" name="whatever" value="3" /> 
<input type-"checkbox" name="whatever" value="7" /> 

Luego en el código:

string values = Request.Form["whatever"] 
2

Esa es una manera perfectamente aceptable de pasar una matriz JS a su archivo codebehind.

Solo asegúrese de tener un control de entrada como un campo oculto marcado con runat = "server" y establezca el valor del control en el resultado de un .join (',') de su matriz JS. Probablemente puedas hacer esto con la función javascript que creó la matriz en primer lugar.

var hiddenField = $get("<%= hdnFieldControl.ClientID %>"); 
hiddenField.value = jsArray.join(','); 

En el servidor, a continuación, dividiría el valor de cadena del control nuevamente para reclamar su matriz.

var serverSideArray = hdnFieldControl.value.Split(new char[0]{','); 

Una nota acerca de este método, dará como resultado una serie de cadenas. Si realmente quieres una matriz de int de que podría convertirlo como un paso más:

int[] myInts = Array.ConvertAll(serverSideArray, int.Parse); 
0

uso de este tipo de approach & deserializar a un int[]. Además, tiene que ocuparse de javascript para concat it + qué pasa si sus requisitos cambian más tarde = más codificación de JavaScript.

En general, tratar de no mezclar código C# con javascript generación de código/analizar tanto como sea posible o puede terminar con una bestia de una aplicación de depurar.

Cuestiones relacionadas