7

静的ファイルと動的ファイルで相対URLアドレスと絶対URLアドレスを使用する方法を完全に理解したいと思います。

~  : 
/  :
.. : in a relative URL indicates the parent directory
 . : refers to the current directory
 / : always replaces the entire pathname of the base URL
// : always replaces everything from the hostname onwards

この例は、仮想ディレクトリなしで作業している場合は簡単です。しかし、私は仮想ディレクトリに取り組んでいます。

Relative URI          Absolute URI
about.html            http://WebReference.com/html/about.html
tutorial1/            http://WebReference.com/html/tutorial1/
tutorial1/2.html      http://WebReference.com/html/tutorial1/2.html
/                     http://WebReference.com/
//www.internet.com/   http://www.internet.com/
/experts/             http://WebReference.com/experts/
../                   http://WebReference.com/
../experts/           http://WebReference.com/experts/
../../../             http://WebReference.com/
./                    http://WebReference.com/html/
./about.html          http://WebReference.com/html/about.html

仮想ディレクトリで作業している私のプロジェクトのように、以下のサイトをシミュレートしたいと思います。

これらは私のaspxおよびascxフォルダーです

http://hostAddress:port/virtualDirectory/MainSite/ASPX/default.aspx
http://hostAddress:port/virtualDirectory/MainSite/ASCX/UserCtrl/login.ascx

http://hostAddress:port/virtualDirectory/AdminSite/ASPX/ASCX/default.aspx

これらは私のJSファイルです(aspxファイルとascxファイルの両方で使用されます):

http://hostAddress:port/virtualDirectory/MainSite/JavascriptFolder/jsFile.js
http://hostAddress:port/virtualDirectory/AdminSite/JavascriptFolder/jsFile.js

これは私の静的Webページアドレスです(いくつかの写真を表示し、いくつかのjs関数内で実行したい):

http://hostAddress:port/virtualDirectory/HTMLFiles/page.html

これは私の画像フォルダです

http://hostAddress:port/virtualDirectory/Images/PNG/arrow.png
http://hostAddress:port/virtualDirectory/Images/GIF/arrow.png

ASPXファイルにファイルのリンクを書き込みたい場合は、次のように記述します。

aspxImgCtrl.ImageUrl = Server.MapPath("~")+"/Images/GIF/arrow.png";

しかし、ハードコードされたパスまたはjavascriptファイルからのパスを記述したい場合、どのようなURLアドレスにする必要がありますか?

4

1 に答える 1

7

〜演算子は、サーバーコントロールとサーバーコードでのみasp.netによって認識されます。クライアント要素に〜演算子を使用することはできません。

サーバーコントロールの絶対パス参照と相対パス参照には、次の欠点があります。

•絶対パスは、アプリケーション間で移植できません。絶対パスが指すアプリケーションを移動すると、リンクが壊れます。

•リソースまたはページを別のフォルダーに移動すると、クライアント要素のスタイルの相対パスを維持するのが難しい場合があります。

これらの欠点を克服するために、ASP.NETにはWebアプリケーションのルート演算子(〜)が含まれています。これは、サーバーコントロールでパスを指定するときに使用できます。ASP.NETは、〜演算子を現在のアプリケーションのルートに解決します。〜演算子をフォルダと組み合わせて使用​​すると、現在のルートに基づくパスを指定できます。

あなたが投稿した例は

aspxImgCtrl.ImageUrl = Server.MapPath("~")+"/Images/GIF/arrow.png";

上記のコードは、サーバーの物理パスをレンダリングします(たとえば、-c:\ inetpub \ wwwroot \ mysite \ images \ gif \ arrow.png "は、クライアント側ではあまり意味がありません。

正しいクライアント相対パスには、これを使用する必要があります。

aspxImgCtrl.ImageUrl = "~/Images/GIF/arrow.png"; 

javascriptからリソースを参照するには、アクセスパスを統合するための1レベルのフォルダー構造を検討することをお勧めします。例えば:

  • ページ
  • JS
  • ピックス
  • 等...

詳細については、 asp.netWebサイトのパスにアクセスしてください。

于 2010-05-06T15:30:36.313 に答える