2010-06-10 7 views
0

J'ai un site Web IIS. Ce site Web contient d'autres sites Web de sorte que la structure est comme ceci.Problème de référencement des fichiers CSS et JavaScript relativement

\ 
MainWebSite\ 
     Scripts\ 
     CSS\ 
     App1\ 
      Scripts\ 
      CSS\ 
     App2\ 
      Scripts\ 
      CSS\ 

Tous les sites sont des applications Web ASP.NET MVC.

Dans le MasterPage de App1, je référence les fichiers de script comme ceci:

<script type="text/javascript" src="../../Scripts/jquery-ui-1.8.custom.min.js"> 
</script> 

Le problème est qu'il essaie maintenant de trouver le fichier à l'adresse http: \ server \ MainWebSite \ Scripts ....

Comment puis-je contourner cela? Devrais-je mettre tous mes scripts et fichiers CSS dans le répertoire racine, est-ce une solution préférée?

+0

Pouvez-vous préciser quel est exactement le problème avec cela? Existe-t-il des pages dans des répertoires différents, de sorte que le lien relatif se brise? –

+1

Vos fichiers script et css sont-ils situés dans MainWebSite \ Scripts? – IsmailS

+0

non mais vous ne pouvez pas savoir que sry, ils sont comme je l'ai ajouté maintenant! – Markus

Répondre

4

Dans ASP.NET il y a une grande fonction qui fait partie de la page Objet:

ResolveUrl(String) 

Ceci est utilisé en passant dans une chaîne relative, mais la meilleure partie est que vous pouvez utiliser le ~ pour symboliser la racine de votre site:

<script type="text/javascript" src='<%=ResolveURL("~/PATH_FROM_ROOT/Scripts/jquery-ui-1.8.custom.min.js")%>'></script> 

[. Notez les guillemets simples]

+0

C'est exactement ce dont j'avais besoin! impressionnant! Je vous remercie! – Markus

+0

Je sais que ce commentaire est insignifiant comme n'importe quel développeur le sait et Markus s'est compris. Tu veux toujours dire que tu n'as pas fermé les parenthèses et rendu le bloc. – IsmailS

+0

Merci, devrait être corrigé –

0

La meilleure solution consiste à utiliser des URL absolues pour CSS et JavaScript. À l'aide d'une variable globale ajoutée, vous pouvez également l'utiliser sur votre système de développement.

1

Essayez cette

<script type="text/javascript" src="~/../Scripts/jquery-ui-1.8.custom.min.js" runat="server"></script> 

Dans le balisage ci-dessus, je suppose que vos fichiers de script sont MainWebSite \ Scripts \

« ~ » fait référence reletive à partir de votre répertoire racine d'application. L'avantage est que si vous déplacez votre fichier de page maître de MainWebSite\App1\ à MainWebSite\App1\MasterPages\, vous n'aurez pas à modifier toutes les URL relativement référencées dans votre page maître.

+1

~ ne fonctionne pas, sauf si vous êtes sur un contrôle serveur ou si vous utilisez la fonction ResolveURL. Et dans ASP.NET vous ne pouvez pas faire un tag de script runat = "serveur" pour JS –

+0

Merci @Bob pour me le faire savoir. :) – IsmailS

Questions connexes