Domanda

Ho esaminato domande simili su Stack Overflow ma non sono stato in grado di trovare la soluzione a questo particolare problema. Ho una semplice pagina ASP.NET (non proprio, ma facciamo finta) con un pannello di aggiornamento al suo interno.

In questo pannello di aggiornamento c'è un controllo HiddenField con un valore che verrà impostato / aggiornato tramite il mio JavaScript personalizzato. Il valore è aggiornato come posso vedere nel DOM usando Firebug.

Accanto a questo HiddenField c'è un LinkButton che chiama JavaScript per modificare il valore di HiddenField usando OnClientClick (funziona). LinkButton ha anche un gestore OnClick che viene eseguito dopo che il valore è stato modificato.

Tuttavia, nel gestore OnClick , ottengo il valore iniziale di HiddenField e non il valore impostato da JavaScript!

Perché questo? È questo un caso di " PEBKAC " ;?

EDIT: Ho provato la stessa cosa con un TextBox senza successo. Ho anche provato a modificare il valore manualmente utilizzando Firebug prima di inviare il modulo, senza successo.

EDIT 2: Mi sono appena reso conto che Page_Load viene chiamato prima del gestore OnClick , che stava rovinando le cose. Non eliminerò la domanda poiché altre persone potrebbero avere lo stesso problema e potrebbero ritenerla utile.

È stato utile?

Soluzione

Dovrai farlo utilizzando l'evento EndRequestHandler, fornito dal pannello di aggiornamento AJAX.

Guarda questo - >

http://www.codeproject.com/KB/ajax /AfterAjaxUpdate.aspx?display=Print

Altri suggerimenti

Questo mi sembra come se il viewstate ti facesse una brutta battuta (come spesso). Quello che immagino è che quando la pagina torna indietro, il campo nascosto viene inizializzato con il valore contenuto nel Viewstate.

Prova una cosa: non accedere direttamente al valore tramite yourHiddenField.Value ma in OnInit della tua pagina ottenerlo con Request.Forms [yourHiddenField.UniqueId] e lanciarlo su un campo nascosto ed estrarre il valore. Non sono sicuro che questa sia la sintassi giusta. Il "pubblicato" i valori dovrebbero essere nell'oggetto Request da qualche parte se ricordo bene. Vedi se ottieni il valore lì. Se lo ottieni lì, il problema è il viewstate che viene mappato indietro dopo l'evento OnInit della pagina. Quindi dobbiamo trovare una soluzione per questo ...

Come stai generando il nuovo input sul client? Sarebbe possibile invece eseguire questa operazione sul server?

In questo modo è possibile utilizzare solo OnClick anziché sia ?? OnClick che OnClientClick .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top