77 votes

Problèmes de page maîtresse et de chemin d'accès aux fichiers en ASP.Net

J'essaie d'ajouter une référence script à jQuery dans ma page principale afin qu'elle fonctionne pour n'importe quelle page. Actuellement, cela ressemble à ceci

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

Le problème est que le chemin d'accès est toujours relatif à la page aspx en cours d'exécution. Cela ne fonctionnera donc que si le fichier "jquery.js" se trouve dans le même dossier. Pour que cela fonctionne, je dois changer la ligne en :

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

Cette méthode est évidemment loin d'être idéale, car elle ne fonctionne que pour les pages situées à deux niveaux du dossier racine. Si j'essaie ce qui suit, IIS affiche une erreur concernant un caractère inattendu.

<script runat="server" type="text/javascript" src="~/jquery.js"></script>

Des idées ?

EDIT : J'ai oublié de mentionner également que le script DOIT être dans la balise head.

La première réponse actuelle génère un " Le cadre côté client d'ASP.NET Ajax n'a pas réussi à se charger. "lorsque je l'ajoute à ma page principale. Elle est générée par le javascript et non par le compilateur .Net. Si je déplace le ScriptManager dans la section head où il devrait se trouver, j'obtiens une erreur de compilation car le ScriptManager doit se trouver à l'intérieur d'une balise de formulaire.

La troisième réponse génère un " Caractères illégaux dans le chemin. "exception du compilateur

EDIT 2 : Lorsque j'ajoute cette ligne à ma balise head, j'obtiens cette erreur de IIS.

La collection Controls ne peut pas être modifiée car le contrôle contient des blocs de code (c'est-à-dire <% ... %>).

SOLVÉ : J'ai pris la réponse éditée de la réponse ci-dessous et je l'ai mise à l'intérieur d'un fichier de type asp:ContentPlaceHolder élément

0voto

karim79 Points 178055
<script type="text/javascript" src="/full/path/to/jquery.js"></script>

0voto

XOR Points 1027

Si cette balise script va directement dans le navigateur, il est peu probable que vous puissiez y substituer le Root de votre site. Du moins pas sur le serveur. Vous pouvez donc le faire :

  1. Déployer le site à la racine du domaine et utiliser des chemins absolus (solution la plus simple).
  2. Insérez ce lien avec le contrôle du serveur.
  3. Prétraiter le HTML résultant avant de avant de l'envoyer au client (avec HttpResponse.Filter).

0voto

Hrvoje Points 4248

Vous pouvez également utiliser la balise HTML <base> :

<base href="http://www.domain.com"></base>

et ensuite tous les liens dans la section d'en-tête sont relatifs à l'adresse de base :

<script type="text/javascript" src="scripts/jquery.js"></script>

C'est souvent utile lorsque vous avez plusieurs destinations de publication, comme le serveur web de développement local, le serveur de démonstration, etc. Il suffit de remplacer l'URL de base.

0voto

Yusan Susandi Points 113
<body>
<script language="javascript" src='<%= this.ResolveClientUrl("~/full/path/to/jquery.js") %>' type="text/javascript"></script>
</body>

0voto

Umesh Bagalur Points 46

Pour le chemin absolu du fichier d'une page, utilisez le chemin suivant :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X