Domanda

<document.write("<SCR"+"IPT TYPE='text/javascript' SRC='"+"http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+"/"+gDcsId+"/wtid.js"+"'><\/SCR"+"IPT>");

Devo sfuggire alla stringa sopra per aggiungere il tutto a StringBuilder ma finora devo mancare qualcosa perché la terminazione della stringa non è corretta ...

È stato utile?

Soluzione

string x = @"<document.write(""<SCR""+""IPT TYPE=""'text/javascript' SRC='""+""http""+(window.location.protocol.indexOf('https:')==0?'s':'')+""://""+gDomain+""/""+gDcsId+""/wtid.js""+""'><\/SCR""+""IPT>"");";

Il prefisso @ semplifica la fuga. Devi solo girare ogni " in " " ;.

Troverai il tuo programma molto più facile da mantenere se memorizzi JavaScript in un file esterno. Suppongo che tu stia usando StringBuilder in modo da poter mescolare bit di script costanti con alcuni valori dinamici? Potresti scriverlo in un file ma mettere escape come questo per i valori dinamici:

var fromCSharp = {0};

Quindi, in fase di runtime, carica il file JS e assegnalo a string.Format come stringa di formato, insieme ai valori per sostituire ogni occorrenza di {0}, {1}, ecc. Devi solo caricare la stringa di formato da il file una volta e tienilo nella cache.

Inoltre, se i valori che stai inserendo in JavaScript sono essi stessi valori letterali di stringhe, dovrai evitarli in base alla sintassi di JavaScript.

Altri suggerimenti

Dovresti provare qualcosa del genere:

@"<document.write(""<SCR""+""IPT TYPE='text/javascript' SRC='""+""http""+(window.location.protocol.indexOf('https:')==0?'s':'')+""://""+gDomain+""/""+gDcsId+""/wtid.js""+""'><\/SCR""+""IPT>"");"

Quando si antepone una stringa letterale con @, l'unica escape necessaria è raddoppiare " caracter.

Spero che questo aiuto.

La stringa all'inizio è esattamente ciò che voglio ... (Non sto mescolando JavaScript con C # - Devo solo aggiungere una stringa a StringBuilder C # che per coincidenza contiene del JavaScript)

È uno script esterno che devo mettere su una pagina, usando StringBuilder (per vari motivi).

Non ho modo di sapere se eventuali modifiche allo script lo faranno fallire, quindi devo includerlo così com'è ...

È solo 1 riga dello script totale, ma la maggior parte delle altre righe sono riuscita a fuggire correttamente e sono incluse come desiderato ...

Penso che stai mescolando ciò che è JavaScript e che cosa è C # . Puoi dirci per favore la stringa che sei la stringa che stai cercando di ottenere ...

ad esempio

window.location.protocol.indexOf ('https:') è JavaScript

ma presumibilmente

gDomain e gDcsId

sono variabili del tuo metodo C #

forse questo:

"<SCRIPT TYPE='text/javascript' SRC='"+"http"+"(window.location.protocol.indexOf('https:')==0?'s':'')"+"://" + gDomain + "/"+ gDcsId+ "/wtid.js"+"'></SCRIPT>")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top