Domanda

Questa potrebbe essere una domanda dolorosamente semplice per la quale sarò deriso, ma ho difficoltà a usare i percorsi dei file nelle pagine master. Credo che ciò sia dovuto al fatto che se una pagina in una sottodirectory utilizza la pagina master, il percorso del file non è corretto.

Per risolvere questo problema, devo ottenere il percorso del file dalla radice, ma non riesco a farlo funzionare.

Ho provato:

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

e

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

Nessuna fortuna neanche!

Qualche idea su come posso dirlo per ottenere il percorso del file dalla radice? Grazie :)

È stato utile?

Soluzione

Sto solo assumendo per filepath, in realtà intendi url (o uri, dimentico quale è parziale).

Senza ~, il primo esempio dovrebbe funzionare. <script type="text/javascript" src="/jQueryScripts/jquery.js"></script> farebbe sì che il browser richiedesse http://www.example.com/jQueryScripts/jquery .js (dove www.example.com è il tuo dominio).

Altri suggerimenti

Se stai gestendo un sito abilitato per AJAX, vedi la mia risposta a Modo preferito per includere il riferimento relativo a JavaScript nella Masterpage nidificata VS 2008 .

Ritengo che sia necessario avere runat=server nel tag <head> del MasterPage per far funzionare questo rebasing dell'URL.

<head runat="server">

Prima di tutto la tilde di fronte è una cosa asp.net da usare nei controlli server e non funzionerà in HTML di base.

Senza entrare in spiegazioni dettagliate, puoi semplicemente usare una barra (/) di fronte e includere il nome dell'app Web se non è il sito principale.

Oppure puoi inserire il codice nella tua pagina principale per includere in modo dinamico gli script e lasciarlo gestire il percorso. Come:

    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);
    }

Il codice precedente aggiunge anche la versione dell'assembly. Lo uso principalmente per lo sviluppo in modo che i miei file javascript vengano aggiornati ogni volta che costruisco.

È possibile utilizzare il metodo Page.ResolveUrl per aggirare questo

ad esempio:

<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top