80 Stimmen

ASP.Net Master Page und Dateipfadprobleme

Ich versuche, einen Skriptverweis auf jQuery in meiner Masterseite hinzuzufügen, damit er für jede Seite funktioniert. Derzeit sieht es so aus

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

Das Problem ist, dass der Pfad immer relativ zur ausführenden aspx-Seite ist, so dass dies nur funktioniert, wenn sich die Datei "jquery.js" im selben Ordner befindet. Damit es funktioniert, muss ich die Zeile zu ändern:

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

Dies ist natürlich nicht ideal, da es nur für Seiten funktioniert, die zwei Ebenen tiefer als der Stammordner liegen. Wenn ich das Folgende versuche, gibt IIS eine Fehlermeldung über ein unerwartetes Zeichen aus.

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

Irgendwelche Ideen?

EDITAR: Ich habe auch vergessen zu erwähnen, dass das Skript im head-Tag stehen MUSS

Die aktuelle Top-Antwort wirft ein " ASP.NET Ajax Client-seitiges Framework konnte nicht geladen werden. "Fehler, wenn ich es zu meiner Masterseite hinzufüge. Er wird von Javascript und nicht vom .Net-Compiler ausgelöst. Wenn ich den ScriptManager in den Kopfabschnitt verschiebe, wo er sein sollte, erhalte ich einen Kompilierungsfehler über den ScriptManager, der innerhalb eines Formular-Tags sein muss.

Die dritte Antwort führt zu einem " Unzulässige Zeichen im Pfad. " Ausnahme des Compilers

EDIT 2: Wenn ich diese Zeile zu meinem head-Tag hinzufüge, erhalte ich diese Fehlermeldung von IIS.

Die Controls-Sammlung kann nicht geändert werden, da das Steuerelement Codeblöcke enthält (d.h. <% ... %>)

GELÖST: Ich habe die bearbeitete Antwort aus der folgenden Antwort in ein asp:ContentPlaceHolder Element

1voto

Umesh Bagalur Punkte 311

Für den absoluten Pfad der Datei für eine beliebige Seite verwenden Sie den folgenden Pfad:

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

0voto

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

0voto

XOR Punkte 2137

Wenn dieses Skript-Tag direkt an den Browser weitergeleitet wird, können Sie die Root Ihrer Website dort wahrscheinlich nicht ersetzen. Zumindest nicht auf dem Server. Sie können es also:

  1. Website im Stammverzeichnis der Domäne bereitstellen Namen und verwenden Sie absolute Pfade (einfachste Lösung).
  2. Fügen Sie diesen Link mit Serversteuerung ein.
  3. Vorverarbeitung des resultierenden HTML vor bevor sie an den Client gesendet wird (mit HttpResponse.Filter).

0voto

Hrvoje Hudo Punkte 8904

Sie können auch den HTML-Tag <base> verwenden:

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

und dann sind alle Links im Kopfbereich relativ zur Basisadresse:

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

Dies ist oft nützlich, wenn Sie mehrere Veröffentlichungsziele haben, z. B. einen lokalen Entwicklungs-Webserver, einen Demoserver usw. Sie ersetzen einfach die Basis-URL.

0voto

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X