Question

C’est peut-être une question douloureusement simple à laquelle on me moquera mais j’ai du mal à utiliser les chemins de fichiers dans les pages maîtres. Je pense que c’est parce que si une page d’un sous-répertoire utilise la page principale, le chemin du fichier est incorrect.

Pour résoudre ce problème, je dois obtenir le chemin du fichier à la racine, mais je n'arrive pas à le faire fonctionner.

j'ai essayé:

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

et

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

Pas de chance non plus!

Avez-vous des idées sur la façon dont je peux lui dire d’obtenir le chemin du fichier à la racine? Merci:)

Était-ce utile?

La solution

Je suppose que par chemin de fichier, vous voulez dire en fait url (ou uri, j’oublie lequel est partiel).

Sans le ~, le premier exemple devrait fonctionner. <script type="text/javascript" src="/jQueryScripts/jquery.js"></script> obligerait le navigateur à demander http://www.example.com/jQueryScripts/jquery .js (où www.example.com est votre domaine).

Autres conseils

Je pense que vous devez avoir runat=server la balise <head> de la MasterPage pour que cette URL soit modifiée.

<head runat="server">

Tout d’abord, le tilde devant est un élément asp.net à utiliser dans les contrôles serveur et ne fonctionnera pas en HTML de base.

Sans entrer dans des explications détaillées, vous pouvez simplement utiliser une barre oblique (/) devant, et inclure le nom de l'application Web si ce n'est pas le site racine.

Vous pouvez également insérer du code dans votre page maître pour inclure de manière dynamique les scripts et le laisser gérer le chemin. J'aime:

    public void AddJavascript(string javascriptUrl)
    {   
        HtmlGenericControl script = new HtmlGenericControl("script");
        script.Attributes.Add("type", "text/javascript");
        javascriptUrl += "?v" + Assembly.GetExecutingAssembly().GetName().Version;
        script.Attributes.Add("src", ResolveUrl(javascriptUrl));
        Page.Header.Controls.Add(script);
    }

Le code ci-dessus ajoute également la version de l’assemblage. J'utilise ceci principalement pour le développement afin que mes fichiers javascript soient mis à jour chaque fois que je construis.

Vous pouvez utiliser la méthode Page.ResolveUrl pour contourner ce problème

.

par exemple:

<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top