2012-05-06 11 views
38

Ich kann die Vorteile nicht verstehen, die ich von Url.Content() Methode in ASP.NET MVC erhalten kann. Zum Beispiel sehen Sie src='@Url.Content("~/Contents/Scripts/jQuery.js")'. Warum sollte ich es benutzen? Welche Gründe könnten dafür bestehen? Welche Vorteile, Vorteile, etc. gegenüber der Verwendung von einfachen alten einfachen Referenzen wie src='/scripts/jquery.js?Warum sollte ich @ Url.Content ("~/blah-blah-blah") verwenden?

Update: Basierend auf den Antworten würde ich gerne wissen, ob es einen anderen Grund für die Verwendung gibt, außer die Handhabung virtueller Ordner? Weil ich die Verwendung von virtuellen Anwendungen nicht so oft gesehen habe (was natürlich nicht bedeutet, dass sie nicht so oft verwendet wurde).

+1

Sie hatten nie mehrere Anwendungen unter einer einzigen Website –

+0

Nun, ist das der einzige Grund, warum sie '@ Url.Content' verwenden? Wenn ja, können wir es einfach bei einer Anwendung pro Website-Lösung einstellen? –

+1

Sorry für die späte Antwort - es ist immer am besten, es aufzunehmen. Sie wissen nie, wie sich die Struktur der Website in Zukunft ändern könnte. Technisch aber wenn Sie _never_ seinen Standort und seine eine Anwendung pro Website ohne virtuelle Verzeichnisse darunter ändern würden, dann könnten Sie einfach src = '/ scripts/whatever.js' verwenden. –

Antwort

26

Mapping virtuellen Pfaden ist es nur Zweck. Wenn du sie nie zuordnen musst und sicher bist, dass deine App oder ihre Ordner nicht unter anderen Apps gespeichert sind, wird dir das keinen Zweck erfüllen.

Von der Dokumentation beachten Sie, wenn Sie im Ergebnis keine Veränderung verwenden ~ Sie nicht sowieso erhalten: „Bemerkungen Wenn der angegebene Inhaltspfad mit dem Tilde nicht startet Zeichen (~), Rückgabe dieser Methode contentPath unverändert.

+0

Danke @AdamTupliper. Dann lasse ich diese Methode einfach aus meiner Toolbox fallen;). –

+7

Beachten Sie, dass in MVC4 ein Teil davon automatisch bearbeitet wird, zum Beispiel ein Skript-Tag, das Sie einfach src = "~/scripts/whatever.js" angeben können, und razor wird es automatisch für Sie ohne die Verwendung von url.content abbilden –

16

Es ist nützlich, wenn der Stammpfad Ihrer Anwendung nicht der Root-Pfad Ihres Servers ist. Url.Content ("~ /") gibt den Stammordner Ihrer Anwendung zurück.

+0

Ich hatte dieses Problem nie. Aber +1. –

+0

Von dem was ich erlebe. Mit '~' wird kein Bildinhalt angezeigt, wenn Sie den Mauszeiger über den Link in Visual Studio bewegen. Says konnte [Pfad] nicht finden. –

32

Normalerweise wird Ihre Webanwendung wie folgt veröffentlicht: www.yoursite.com/. Das Zeichen ~ entspricht dem Stamm der Site /.

Wenn Sie jedoch Ihre Site mit einem virtuellen Verzeichnis www.yoursite.com/mywebapp/ veröffentlichen, würde das Zeichen ~ mit "/ mywebapp /" übereinstimmen. Hartcodierte URLs mit dem Zeichen "/" würden falsche Seitenverweise verursachen.

Verwandte Themen