コードでは ~/ または ../ パスをよく見つけますが、残念ながら、これらが何であり、違いが何であるかは明確ではありません。複数レベルのディレクトリで使用するものはどれですか?
../ は、サイトまたはアプリケーションのドメインを意味しますか?
それらが何であるか、そしてそれらがどのように異なるかを教えてください。
~/
たとえば、ヘルパー関数でよく参照さ<%= ResolveUrl() %>
れます。これはWebサイトのルートを../
指しますが、単に親ディレクトリを指します。どちらも相対URLです。
例を見てみましょう。Webサイトが。という仮想ディレクトリでホストされているとしますMyApplication
。使用<%= ResolveUrl("~/foo/bar") %>
すると、出力URLとして生成さ/MyApplication/foo/bar
れ、これはWebFormの場所に関係なく生成されます。
パスには次の 2 種類があります。
IIS - Web サーバー - Web サイトの URL に相対的な通常のパスを使用する場合/
、または使用している場合。../
つまり/myfile.txt
、アプリケーションが という仮想ディレクトリでホストされている場合は間違っていますmydir
。この場合、/myfile.txt
は次のような URL で終わりhttp://www.mydomain.com/myfile.txt
ますhttp://www.mydomain.com/mydir/myfile.txt
。
そのため、ASP.NET は仮想パスを提供する機会を提供します。それらはすべてキャラクターから始まり~
ます。文字は~
、解決された URI が IIS アプリケーションに対して相対的であることを指定します。上記の例を期待するhttp://www.mydomain.com/mydir/myfile.txt
と、正しい仮想パスは になります~/myfile.txt
。
非サーバー コントロールでは仮想パスを使用できないことに注意してください。この種のパスは、選択された数の ASP.NET クラス メソッドとサーバー コントロールで使用されます。
チルダ(〜)は、アプリケーションのルートディレクトリを示します。ASPでは、チルダはHyperLinksまたはPage.ResolveURLに使用されます。
2つのドット(..)は、現在のフォルダーより1レベル上のフォルダーを示します。