Error de compilación en esta cadena
-
05-07-2019 - |
Pregunta
Estoy intentando crear la siguiente cadena:
<script runat="server" type="text/C#">
protected void Page_Load(object sender, EventArgs e)
{
Parent.Page.ClientScript.RegisterStartupScript(typeof(Page), "test", "<script type='text/javascript' langauage='javascript' src='test.js'></script>");
}
</script>
sin embargo, aparece un error de compilación en VS que dice " Newline en constante "
Solución
Su problema es la etiqueta final del script
http://support.microsoft.com/kb/827420
Resuélvelo con:
".....<"+"/SCRIPT>"
o tal vez
".....<\/script>"
Use ClientScriptManager en su lugar y use RegisterClientScriptInclude. De esta manera solo necesita tener el nombre del archivo en una cadena.
ClientScriptManager.RegisterClientScriptInclude
ClientScriptManager scriptManager = new ClientScriptManager(); scriptManager.RegisterClientScriptInclude("filename.js");
Otros consejos
"<script type='text/javascript' langauage='javascript' src='test.js'></script>"
Bueno, sí, tienes una cadena que contiene < / script > dentro de < script > elemento. Eso cierra el & Lt; script & Gt ;, por lo que el código que parece estar dentro de su script runat-server es simplemente:
protected void Page_Load(object sender, EventArgs e)
{
Parent.Page.ClientScript.RegisterStartupScript(typeof(Page), "test", "<script type='text/javascript' langauage='javascript' src='test.js'>
Y como dice el error, eso contiene una cadena " sin comillas dobles terminadas.
Intenta escapar de los caracteres para que el otro bloque de script no los vea como marcado:
"\x3Cscript type='text/javascript' src='test.js'>\x3C/script>"
@"<script language="Javascript" src="/utility/thickbox/thickbox-custom.js"></script>"