2011-02-07 9 views
5

Ho una matrice che viene creata in javascript in base agli elementi selezionati. Una volta creata questa matrice (matrice intera), come posso passare a C#? Sarebbe più facile creare una casella di testo nascosta e aggiungere tutti gli elementi in una stringa e dividere semplicemente quella stringa all'interno di C#? Ad esempio, se le caselle di controllo per le righe 1,3,7 e cliccate su, il mio array è {1,3,7}. Ancora una volta, sarebbe più facile avere una casella di testo nascosta che ottiene la stringa "1,3,7" e ottengo solo la stringa dalla casella di testo?Passa un array javascript a un metodo C#

+0

Più facile allora? – epitka

+0

C'è una funzione per decodificare JSON in C#, non è vero? Anche Array è un JSON http://stackoverflow.com/questions/1334479/json-decoding-in-c – kirilloid

risposta

2

Vorrei passare l'array al codice C# dietro utilizzando un post ajax su un metodo web.

0

Se si dà ogni casella di controllo di una proprietà 'nome' con lo stesso valore, si riceve un elenco separato da virgole:

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

Poi nel codice:

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

Questo è un modo perfettamente accettabile per passare un array JS al tuo file codebehind.

Assicurati solo di avere un controllo di input come un campo nascosto contrassegnato con runat = "server" e imposta il valore del controllo sul risultato di un .join (',') del tuo array JS. Probabilmente puoi farlo con la funzione javascript che ha creato l'array in primo luogo.

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

Sul server è necessario dividere nuovamente il valore di stringa del controllo per recuperare l'array.

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

Una nota su questo metodo, che si tradurrà in un array di stringhe. Se si vuole veramente un array di int di si potrebbe convertire come un altro passo:

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

Utilizzare questo tipo di approach & deserialize a un int[]. Inoltre, è necessario avere cura del javascript per concatenarlo + e se i requisiti cambiano in seguito = più codice javascript.

Nel complesso, cercano non mescolare codice C# con javascript generazione di codice/parsing per quanto possibile, o si può finire con una bestia di un'applicazione per eseguire il debug.