Pagine master, file Javascript e immagini di sfondo

Credo che il 99% dei siti sviluppati con ASP .NET, a partire dalla versione 2.0, facciano uso delle pagine Master. Tra le altre cose, esse possono essere utilizzate per aggiungere il riferimento a file Javascript (*.js) in modo da renderli automaticamente disponibili a tutte le pagine. Il problema di questo approccio è che il percorso del file Javascript (quello indicato nell'attributo src del tag script) è relativo alla posizione della Master page: ad esempio, se la master page è nella root del sito e il file javascript si trova nella directory Js, il tag script avrà la seguente forma:

<script src="js/functions.js" type="text/javascript" language="javascript"></script>

Tuttavia, se il sito contiene file ASPX in altre directory, questo percorso non è più valido, poiché la loro posizione relativa rispetto al file javascript è diverso (ad esempio, dovrebbe essere del tipo "../js/functions"). Purtroppo con il tag script non si può usare il carattere speciale ~ per indicare la root del sito. La soluzione al problema consiste nell'usare il metodo ResolveUrl per determinare dinamicamente il percorso corretto del file:

<script src="<%= ResolveUrl("~/js/functions.js")%>" type="text/javascript" language="javascript"></script>

Così facendo, il runtime di ASP .NET di volta in volta inserirà nel tag script il percorso del file corretto, in base alla posizione della pagina ASPX.

Lo stesso "trucco" permette di indicare un'immagine di sfondo nel tag body della Master page, in modo che sia visualizzata correttamente da tutte le altre pagine del sito, indipendentemente dalla loro posizione.

Technorati Tags: , ,

posted @ lunedì 1 dicembre 2008 1.13

Print

Comments on this entry:

# re: Pagine master, file Javascript e immagini di sfondo

Left by Alessandro at 01/12/2008 8.27
Gravatar
Uhh molto bene, mi è utile sta cosa. Sai se il trucchetto può servire anche per gli usercontrol ? sarebbe utile pure lì.

# re: Pagine master, file Javascript e immagini di sfondo

Left by Marco Minerva at 01/12/2008 9.26
Gravatar
Non ho provato direttamente con gli UserControl, ma il metodo ResolveUrl è esposto dalla classe Control, quindi penso che tu possa usarlo anche con questo tipo di oggetti

Your comment:



 (will not be displayed)


 
 
 
Please add 7 and 5 and type the answer here:
 

Live Comment Preview:

 
«luglio»
domlunmarmergiovensab
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678