Lorsqu’on utilise des fichiers JavaScript externes, il faut les référencer dans l’en-tête de notre page html, tout comme on le fait pour nos fichiers CSS. Par contre, contrairement aux fichiers CSS, les références vers les fichiers JavaScript peuvent poser problème si la MasterPage est utilisée par plusieurs pages situées dans des dossiers différents.

L’en-tête de nos pages aspx contient l’attribut runat="server" par défaut, ce qui va permettre au serveur de parcourir le contenu du <head>, afin de mettre à jour les liens vers nos fichiers css (ou d’autres types de liens, si par exemple vous avez défini un flux RSS). Cependant, ceci ne s’applique pas aux balises <script>, utilisées pour appeler les fichiers JavaScript : si on essaie d’interpréter cette balise coté serveur, le serveur va essayer d’exécuter son contenu (et donc le contenu du fichier .js), ce qui ne fonctionnera pas puisque le JavaScript est du code destiné au navigateur.

Pour référencer correctement nos fichiers, il va donc falloir explicitement demander la construction du chemin relatif correct. Pour cela, il va nous falloir utiliser la méthode ResolveClientUrl de la classe Control.

<script src="<%= ResolveClientUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>

Ceci fonctionne aussi bien avec ASP.NET Webforms qu’avec le nouveau Framework ASP.NET MVC.