Domanda

Sto cercando di aggiungere un riferimento script jQuery nel mio master pagina in modo che funziona per ogni pagina.Attualmente è simile a questo

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

Il problema è che il percorso è sempre relativa alla esecuzione di pagina aspx in modo che questo funziona solo se l' "jquery.js" file si trova nella stessa cartella.Per farlo funzionare devo modificare la riga:

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

Questo è, ovviamente, a meno che ideale, perché funziona solo per le pagine che sono due livelli di profondità dalla cartella principale.Se cerco i seguenti, IIS genera un errore su un carattere imprevisto.

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

Tutte le idee?

EDIT: Ho dimenticato di dire che lo script DEVE essere nel tag head

L'attuale top di risposta lancia una "ASP.NET Ajax framework lato client non è riuscito a caricare."errore quando aggiungo alla mia pagina master.La sua generata da javascript e non .Netto del compilatore.Se sposto la ScriptManager a capo della sezione in cui si dovrebbe ottenere un errore di compilazione di circa ScriptManager bisogno di essere all'interno di un tag form.

La terza risposta lancia una "Caratteri non validi nel percorso."eccezione dal compilatore

EDIT 2: Quando ho aggiunto che la linea per il mio tag head, ottengo questo errore da IIS.

L'insieme di Controlli, non può essere modificata, in quanto il controllo contiene blocchi di codice (es.<% ...%>)

RISOLTO: Ho preso la risposta modificata dalla risposta qui sotto e metterlo all'interno di un asp:ContentPlaceHolder elemento

È stato utile?

Soluzione

È possibile utilizzare un ScriptManager :

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/jquery.js" />
    </Scripts>
</asp:ScriptManager>

EDIT: se assolutamente bisogno di questo nella vostra sezione <head>, si potrebbe fare qualcosa di simile:

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

EDIT 2: Secondo i commenti, se si sta osservando che

  

La collezione I controlli non può essere modificata perché il controllo contiene blocchi di codice (cioè <% ...%>)

potrebbe essere necessario cambiare la precedenza per utilizzare il data-binding sintassi:

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

Altri suggerimenti

Provare <%# invece di <%= nella pagina Master in capo sezione

<script type="text/javascript" 
        src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>">
</script>

Poi, nel Code-Behind della pagina Master sotto Page_Load Evento

Page.Header.DataBind();

Ora vi sono buone per andare con jQuery e JavaScript così come CSS è necessario modificare il percorso in ResolveUrl il file su cui si desidera gestire CSS, JavaScript, jQuery.

Se non avete intenzione di noi asp: ScriptManager o percorsi assoluti allora si può fare in questo modo:

<script runat="server" type="text/javascript" 
  src='<%= Page.ResolveUrl("~/jquery.js") %>'></script>

Non so se voi ragazzi hanno trovato la soluzione al vostro problema o meno. Ero di fronte lo stesso problema e andare noci di capire perché ottengo "jQuery è definito" errore i plugin che uso. Ho provato tutte le soluzioni che ottengo da internet, ma senza fortuna a tutti.

Ma, improvvisamente qualcosa spruzzata su mia mente che possono essere i file di script deve essere in ordine. Così, ho spostato il referece jquery alla prima posizione e tutto ciò che inizio a lavorare come fascino.

Ricordate ragazzi, se si sta utilizzando tutti i plugin con jQuery, assicurarsi di utilizzare l'ordine folloing di impostazione riferimento a tali fiels.

  1. riferimento alla libreria jquery
  2. riferimento all'altro successiva plug-in librerie e così via ...

per esempio:.

  1. "script src =" js / jquery-1.3.2.min.js" type = "text / javascript" ...
  2. "script src =" js / jqDnR.min.js" type = "text / javascript" ...
  3. "script src =" js / jquery.jqpopup.min.js" type = "text / javascript" ...
  4. "script src =" js / jquery.bgiframe.min.js" type = "text / javascript" ...

accertarsi sempre che deve mettere il riferimento jQuery per prima e poi le librerie successive.

Speranza, questo risolve il problema, soprattutto quando si utilizza con MasterPages. E 'molto strano che funziona, non importa in che ordine si usa quando non si utilizza MasterPages ma quando lo fai, allora requres in qualche modo il giusto ordine.

In bocca al lupo e codifica felice,

Vincent D'Souza

Guarda Come eseguire un Root‘/’. Questo dovrebbe risolvere tutti i vostri problemi per quanto riguarda i percorsi dei file irrisolto .js. Che, fondamentalmente, riconfigurare il server VS Dev per eseguire l'applicazione come localhost:port/ in contrapposizione al localhost:port/application name/ regolare rendendo la risoluzione dei nomi funzionano allo stesso modo come fa su IIS.

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

Se questo tag script va direttamente al browser, quindi è improbabile che può sostituire principale del sito lì. Almeno non sul server. Quindi è possibile:

  1. sito Deploy alla radice del dominio nome e utilizzare percorsi assoluti (Soluzione più semplice).
  2. Inserisci questo legame con controllo server.
  3. Preprocessa risultante HTML prima l'invio al cliente (con HttpResponse.Filter).

È inoltre possibile utilizzare tag HTML:

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

e quindi tutti i collegamenti nella sezione di intestazione sono relative all'indirizzo di base:

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

E 'spesso utile quando si hanno più destinazioni editoriali, come server di dev web locale, server dimostrativo, ecc Basta sostituire l'URL di base.

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

Per percorso assoluto del file per qualsiasi utilizzo pagina che segue:

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