2016-04-22 10 views
1

In meiner MVC-Anwendung, ich versuche, eine HTML-Seite wie dieseserver.mappath resolve referenzierten Dateipfad relativ dir

return File(Server.MapPath("~/Documentation/" + decoded["version"].ToString().Trim() + "/" + "index.htm"), "text/html"); 

Der Einstiegspunkt index.htm zu dienen enthält einige js Skripte.

Obwohl ich die relative URL angegeben habe, wird der Pfad des enthaltenen Skripts zum Anwendungsstamm aufgelöst.

Das Angeben eines absoluten Pfads funktioniert, aber ich benötige Skripts, um auf einen relativen Speicherort aufgrund eines dynamisch generierten Verzeichnisnamens zu verweisen.

Ich verstehe, dass ich nicht genug Informationen zur Verfügung gestellt habe. Ich denke, was passiert, ist, dass die .htm-Datei vom Index-Controller zurückgegeben wird und seine Route ist der Anwendungsstamm. Deshalb werden relative Pfade so aufgelöst.

+1

Bitte klären, was URLs, die Sie bekommen/wollen. "./whver.js" ist tatsächlich relativ zur aktuellen Seite URL - also nicht wirklich klar, was Sie erwarten, dass es zu lösen. –

+0

Randnotiz: MVC-Tag ist für MVC-Design-Muster Fragen - es ist völlig unabhängig von Ihrem Beitrag von dem, was ich sehen kann. Möglicherweise meinen Sie asp.net-mvc. –

+0

Ich erwarte, dass es in den dynamisch generierten Ordner unter Dokumentation aufgelöst wird, in meinem Fall /Documentation/791/whver.js, aber ich bekomme localhost/whver.js aus irgendeinem Grund –

Antwort

1

Ich hoffe, wenn Sie den Pfad von relativ zu absolut ändern wird es einfacher. Der absolute Pfad beginnt mit einem Schrägstrich - '/' und zeigt den Wurzelpunkt Ihrer Website an. Ich meine, wenn Sie auf die Webseite www.index.com/index.html gehen, ist der absolute Pfad Ihrer Seite /index.html.

Nächster Code ist Arbeit für mich. public ActionResult Index() { using (var streamRead = System.IO.File.OpenRead( System.IO.Path.Combine( Server.MapPath("~/Documents"), "index.html"))) { return File(streamRead, "text/html"); } }

und HTML-Seite: <!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8" /> </head> <body> <script type="text/javascript" src="/Scripts/jquery-1.10.2.js" ></script> <script> console.dir("jquery version: " + jQuery.fn.jquery); </script> </body> </html>

+0

In meiner Frage habe ich angegeben, dass der absolute Pfad funktioniert, aber ich habe ein dynamisch generierter Ordner –