Javascript registrato in un custom control che non viene renderizzato ...

mercoledì 16 maggio 2012 - 12.33
Tag Elenco Tags  .NET 3.5  |  Windows Server 2003  |  Visual Studio 2008

josef_knecht Profilo | Newbie

ciao a tutti, come da oggetto, ho uno user control nel quale registro del codice javascript come sotto, ora se il controllo lo uso in una pagina aspx senza utilizzare una master page tutto funziona correttamente, ma se il custom control lo metto in una pagina apsx con master page o nella master page direttamente, il codice javascript non lo ritrovo nell'HTML della pagina, come mai ?

Grazie

Jk

protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
this.RegisterScript();

}
protected void RegisterScript()
{
string scriptKey = "jsGestioneMenu";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
if (!Page.ClientScript.IsClientScriptBlockRegistered(scriptKey))
{
sb.Append("<script language='javascript' type='text/javascript' >\r\n<!--\r\n");
sb.Append("function fnMostraSubMenu(idmenu, itemscount)\r\n");
sb.Append("{\r\n");
sb.Append("for (var i=1; i<=itemscount;i++)\r\n");
sb.Append("{\r\n");
sb.Append("if (document.getElementById(idmenu + '_' + i).style.display == 'block')\r\n");
sb.Append("$('#' + idmenu + '_' + i).fadeOut(200, function() {});\r\n");
sb.Append("else\r\n");
sb.Append("$('#' + idmenu + '_' + i).fadeIn(200, function() {});\r\n");
sb.Append("}\r\n");
sb.Append("}\r\n");
sb.Append("\r\n//-->\r\n</script>");
}
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), scriptKey, sb.ToString(), false);
}

andrestu Profilo | Expert

se utilizzi uno script manager prova a registrarlo utilizzando la classe ScriptManager.

Andrea Restucci - Web Developer

josef_knecht Profilo | Newbie

no non utilizzo uno script manager, nella master page non ho il tag form

JK

andrestu Profilo | Expert

ovviamente lo fai il controllo sulla riga:

if (!Page.ClientScript.IsClientScriptBlockRegistered(scriptKey))
{
...

Andrea Restucci - Web Developer

josef_knecht Profilo | Newbie

si lo faccio, il codice è proprio nel mio messaggio, e tra l'altro in debug nel nodo if ci passa pure.

Jk

artcava Profilo | Newbie

Prova così:

Invece di utilizzare in
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
this.GetType().
Prova
typeof(ClasseDelTuoControllo)
Marco Cavallo
WebMaster & Software Architect

Il mio sito in continua evoluzione...
My site is constantly evolving...

Vieni a trovarmi!
Join ArtCava now!
http://www.artcava.net/

josef_knecht Profilo | Newbie

ho provato, ma continua a non andare, non viene registrato nemmeno se metto il codice direttamente nell'evento PreRender della master page.

grazie

Jk
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5