Estoy escribiendo un sitio asp.net (en realidad, un módulo DotNetNuke), usando C#. Desde el código subyacente, intento crear una etiqueta <script>
donde establezco una variable js requerida, y luego la adjunto al HMTL <head>
. Js var es una matriz (literal) de urls relativas para archivos de imagen. Como la matriz contiene cadenas, cada elemento debe estar entre comillas.¿Cómo evitar HtmlGenericControl desde el contenido de codificación html?
El problema es que la cadena entre <script>
y </script>
se está HtmlEncoded automáticamente en alguna parte, por lo que las comillas alrededor de cada elemento de la matriz se reemplazan por "
. Eso parece tener lugar cuando se procesa HtmlGenericControl
. ¿Podría ser DotNetNuke el culpable? ¿Alguien podría sugerir una solución?
Mi código actual (que va desde Page_Load
manejador de mi control):
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);
Recomiendo el uso de nombres de mayúsculas para sus variables. Esto es confuso de leer. – Amy
Gracias por la sugerencia. Realmente no estoy acostumbrado a .net, y comencé a usar mayúsculas para todo después de darme cuenta. Los desarrolladores de .net tienden a mayúsculas * nombres de propiedades de objetos *. ¡Supongo que es un caso de corrección excesiva! – bfavaretto