●[ASP.NET] パスの活用
通常、Webページに表示する画像やリンクファイルのパスは絶対パスあるいは相対パスで設定する。
①絶対URLパス
<asp:image ImageUrl="http://www.hoge.co.jp/MyApp/images/sampleimage.gif" />
②アプリケーションルートに対するサイト相対パス
<asp:image ImageUrl="/MyApp/images/sampleimage.gif" />
③現在のページに対する相対パス
<asp:image ImageUrl="../../images/sampleimage.gif" />
①と②は開発時と運用時で環境が同じでなければならない。
③はユーザ・カスタムコントロールなどで使用される場合、このコントロールが使用されるページのパスが固定でないため使えないことがある。
(決まった階層構造のページ内で使用する必要がある)
しかし、アプリケーションルートからのパスがわかればほぼ決まった位置に画像はまとめて置いてある可能性が高いため、このパスが分かればよい。
だが②のような設定ではIISのアプリケーション名を変えると参照できない。
そこで「~(チルダ)」を使用することにより解決できる。
この「~」は自動的にアプリケーションルートとして解釈されるため、パスを設定しやすくなっている。
<img src="~/images/sampleimage.gif" />
注)しかしこの「~(チルダ)」演算子はサーバコントロールとサーバコードにしか認識されない。
①絶対URLパス
<asp:image ImageUrl="http://www.hoge.co.jp/MyApp/images/sampleimage.gif" />
②アプリケーションルートに対するサイト相対パス
<asp:image ImageUrl="/MyApp/images/sampleimage.gif" />
③現在のページに対する相対パス
<asp:image ImageUrl="../../images/sampleimage.gif" />
①と②は開発時と運用時で環境が同じでなければならない。
③はユーザ・カスタムコントロールなどで使用される場合、このコントロールが使用されるページのパスが固定でないため使えないことがある。
(決まった階層構造のページ内で使用する必要がある)
しかし、アプリケーションルートからのパスがわかればほぼ決まった位置に画像はまとめて置いてある可能性が高いため、このパスが分かればよい。
だが②のような設定ではIISのアプリケーション名を変えると参照できない。
そこで「~(チルダ)」を使用することにより解決できる。
この「~」は自動的にアプリケーションルートとして解釈されるため、パスを設定しやすくなっている。
<img src="~/images/sampleimage.gif" />
注)しかしこの「~(チルダ)」演算子はサーバコントロールとサーバコードにしか認識されない。