Sto scrivendo un sito asp.net (in realtà, un modulo DotNetNuke), usando C#. Da code-behind, sto cercando di creare un tag <script>
dove imposto una variabile js richiesta, quindi lo aggiungo all'HMTL <head>
. Js var è una matrice (letterale) di url relativi per i file di immagine. Poiché la matrice contiene stringhe, ogni elemento deve essere racchiuso tra virgolette.Come impedire HtmlGenericControl dal contenuto di codifica html?
Il problema è, la stringa tra <script>
e </script>
sia automaticamente HtmlEncoded qualche parte, quindi le citazioni intorno ogni elemento dell'array vengono sostituiti con "
. Ciò sembra avvenire quando viene eseguito il rendering dello HtmlGenericControl
. Potrebbe essere DotNetNuke il colpevole? Qualcuno potrebbe suggerire una soluzione alternativa?
mio codice attuale (che parte da Page_Load
gestore in mio controllo):
HtmlGenericControl PreviewDataScriptTag = new HtmlGenericControl("script");
PreviewDataScriptTag.Attributes.Add("type", "text/javascript");
StringBuilder PreviewDataScriptCode = new StringBuilder();
PreviewDataScriptCode.Append("var preview_imgs = [");
string pathPrefix = @"""";
string pathSuffix = @""",";
foreach (string path in this.DocPreviewImages)
{
PreviewDataScriptCode.Append(pathPrefix + PreviewUrlBase + Path.GetFileName(path) + pathSuffix);
}
// Remove last comma from js code
PreviewDataScriptCode.Remove(PreviewDataScriptCode.Length-1, 1);
PreviewDataScriptCode.Append("];");
PreviewDataScriptTag.InnerText = PreviewDataScriptCode.ToString();
Page.Header.Controls.Add(PreviewDataScriptTag);
Si consiglia di utilizzare nomi di case inferiori per le variabili. Questo è fonte di confusione da leggere. – Amy
Grazie per il suggerimento. Non sono molto abituato a .net e ho iniziato a usare maiuscole per tutto dopo aver realizzato gli sviluppatori .net tendono a nomi di oggetti * maiuscoli *. Immagino sia un caso di correzione eccessiva! – bfavaretto