Esiste un metodo System.Web.UI.ClientScriptManager che registra gli script all'interno del tag ?
-
23-09-2019 - |
Domanda
Lo so che è strettamente OK di mettere tag <script>
nel corpo, ma nell'interesse di pulizia mi piacerebbe usare System.Web.UI.ClientScriptManager
per registrare uno script nella <head>
della mia pagina. Esiste un metodo per ottenere questo risultato?
Grazie in anticipo.
Soluzione
In questi casi di solito aggiungere un ContentPlaceHolder nel tag del mio Maestro pagina.
In alternativa ho usato un metodo (di solito in una classe di utilità o di classe PageBase) che mette la stringa script in una lista e lo memorizza nel contesto ASP.Net in questo modo:
List<string> javaScriptUrls = new List<string>();
url = url.ToLower();
javaScriptUrls = Context.Items[JS_KEY] as List<string>;
if (javaScriptUrls == null)
{
javaScriptUrls = new List<string>();
javaScriptUrls.Add(url);
}
else
{
if (!javaScriptUrls.Contains(url))
javaScriptUrls.Add(url);
}
Context.Items[JS_KEY] = javaScriptUrls;
Poi OnPreRender del MasterPage, si legge questo elenco dal contesto e costruisce tag nell'intestazione.
List<string> _javaScript = Context.Items[JS_KEY] as List<string>;
foreach (string js in _javaScript)
{
HtmlGenericControl script = new HtmlGenericControl();
script.TagName = "script";
script.Attributes.Add("type", "text/javascript");
if (js.StartsWith("~/"))
script.Attributes.Add("src", head.ResolveUrl(js));
else
script.Attributes.Add("src", js);
head.Controls.Add(script);
AddHeaderLineBreak(head);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow