Quotazioni triple? Come faccio a delimitare un parametro string Javascript di database in ASP.NET?

Come faccio a delimitare un parametro string di Javascript in un evento OnClick ancoraggio?

  • Ho un tag di ancoraggio in un controllo ASP.NET Repeater.
  • L'evento OnClick dell'ancora contiene una chiamata a una function Javascript.
  • La function Javascript prende una string per il suo parametro di ingresso.
  • Il parametro string è popolato con un valore di database dal ripetitore.

Ho bisogno delle "doppie virgolette" per il Container.DataItem .
Ho bisogno delle 'singole citazioni' per l' OnClick .

E ho ancora bisogno di un ulteriore delimitatore (triple citazioni?) Per il parametro della string di input della chiamata di function Javascript.

Dal momento che non riesco più a utilizzare le 'virgolette singole', come assicuro che la function Javascript sa che il parametro di input è una string e non un integer?

Senza le virgolette aggiuntive intorno al parametro della string di input, la function Javascript pensa che sto passando in un numero integer.

Acclamazioni in anticipo per qualsiasi conoscenza che puoi lasciare.

L'ancora:

 <a id="aShowHide" onclick='ToggleDisplay(<%# DataBinder.Eval(Container.DataItem, "JobCode") %>);' >Show/Hide</a> 

ecco il Javascript:

 <script language="JavaScript" type="text/javascript"> /* Shows/Hides the Jobs Div */ function ToggleDisplay(jobCode) { /* Each div has its ID set dynamically ('d' plus the JobCode) */ var elem = document.getElementById('d' + jobCode); if (elem) { if (elem.style.display != 'block') { elem.style.display = 'block'; elem.style.visibility = 'visible'; } else { elem.style.display = 'none'; elem.style.visibility = 'hidden'; } } } </script> 

Recentemente ho avuto un problema simile e l'unico modo per risolverlo è stato quello di utilizzare codici HTML vecchi e semplici per singole ( &#39; ) e doppie virgolette ( &#34; ).

Il codice sorgente era ovvio, ma funzionava.

Provare

 <a id="aShowHide" onclick='ToggleDisplay(&#34;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#34;);'>Show/Hide</a> 

o

 <a id="aShowHide" onclick='ToggleDisplay(&#39;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#39;);'>Show/Hide</a> 
 onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); ' 

Utilizza come sopra.

Senza le virgolette aggiuntive intorno al parametro della string di input, la function Javascript pensa che sto passando in un numero integer.

Puoi fare una function string rudimentale per forzare JavaScript per trasformarla in una string? Piace

 value = value + "" 

Provi a mettere il text supplementare all'interno del block script sul lato server e concatenare.

 onclick='<%# "ToggleDisplay(""" & DataBinder.Eval(Container.DataItem, "JobCode") & """);" %>' 

Modifica: sono abbastanza sicuro che potresti utilizzare solo le virgolette doppie al di fuori del block script.

Passaggio della variabile alla function senza quote singole o quote doppie

 <html> <head> </head> <body> <script language="javascript"> function hello(id, bu) { alert(id+ bu); } </script> <a href ="javascript: var x = &#34;12&#34;; var y = &#34;fmo&#34;; hello(x,y)">test</a> </body> </html>