2009-08-04 9 views
1

Ich habe eine Webanwendung .Net 1.1.404 Objekt nicht für Javascript-Dateien gefunden

Ich habe eine Benutzersteuerung (. ASCX), die Links zu 3 JS-Dateien in Skript-Tags hat.

Wenn ich die App starte und eine Seite mit dem usercontrol laden ist alles in Ordnung und Firebug zeigt die js-Dateien aufgelistet.

Aber wenn ich eine andere Seite laden, die die Usercontrol in einem ASPX in einem neuen Browserfenster lädt Firebug meldet 404 Objekt nicht für die 3 JS-Dateien gefunden.

Was könnte das verursachen ??

Malcolm

+0

Könnten Sie den Code, der auf die JS verweist, aus dem Ascx hochladen? –

+0

Malcolm

+0

Ist Ihre Website öffentlich, damit wir sie überprüfen können? – ZippyV

Antwort

0

Sie haben wahrscheinlich die andere Seite an einer anderen Stelle in der Ordnerhierarchie. Vielleicht referenzieren Sie JS mit einem Server-Tag mit einem ~ darin. So

bereite JS Weg zu so etwas wie dies zu ändern:

<script type="text/javascript" src='<%=ResolveUrl("~/someFolder/functions.js")%>'></script> 

ein Tool wie Microsoft Fiddler Verwenden Sie das Problem verstehen zu helfen.

+0

Ich habe das getan und es funktioniert gut in der ersten Seite und firebug listet die Dateien und Sie können sehen, dass src Attribut ist absoluter Pfad, aber die Seite mit dem neuen Fenster funktioniert nicht, die js-Dateien sind nicht in Firebug und kein Objekt aufgeführt Nachricht nicht gefunden. ???? – Malcolm

+0

Auch bei der zweiten Seite hat das Attribut src den absoluten Pfad wie die erste Seite. – Malcolm

0

Sie andere ASPX-Seite befindet sich in einem anderen Ordner? Auf einer anderen Ebene in der Ordnerhierarchie möglich? Sie müssen Ihre JS-Dateipfade so anpassen, dass sie absolute Pfade sind.

0

Sie könnten versuchen, einen Basispfad in Ihren Seiten zu verwenden. In diesem Fall ist jede URL/image/css/js-Referenz in Ihrer Website relativ zum Basispfad. Wenn Sie einen Basispfad auf Ihrer Site verwenden, werden große Probleme beim Verschieben von Dateien in/aus Ordnern vermieden.

Ich normalerweise die Basis-Tag in der Masterseite.

<base href="<%=MyWebsite.Library.Configuration.BasePath%>" /> 

Wie Sie die basepath von meiner Konfiguration angefordert wird sehen können, aber Sie können auch .NET-Code verwenden, um die basepath dertermine.

Die Verwendung dieser Konstruktion erspart mir viele Probleme bei der Entwicklung meiner Seiten. Das einzige Problem ist, dass Visual Studio nicht vollständig bekannt ist, wie dies zu handhaben ist, was zu Warnungen über falsche CssClasses oder Links führt.