ASP.NET Web Pages - フォルダー

本章ではフォルダーとフォルダーパスについて紹介します。

本章では以下のことを学びます:

  • 論理と物理フォルダー構造
  • 仮想と物理名
  • web URLとパス

論理フォルダー構造

以下はASP.NETウェブページの典型的なフォルダー構造です:

Web Pages フォルダ構造
  • "Account"フォルダーにはログインとセキュリティファイルが含まれています。
  • "App_Data"フォルダーにはデータベースとデータファイルが含まれています。
  • "Images"フォルダーには画像が含まれています。
  • "Scripts"フォルダーにはブラウザスクリプトが含まれています。
  • "Shared"フォルダーには一般的なファイル(例えばレイアウトやスタイルシートファイル)が含まれています。

物理ファイル構造

上記のウェブサイトの「Images」フォルダーの物理構造はコンピューター上で以下のようになります:

C:\Johnny\Documents\MyWebSites\Demo\Images

仮想と物理名

上記の例に従って:

web画像の仮想名は「Images/pic31.jpg」のような形です。

しかし、物理名は「C:\Johnny\Documents\MyWebSites\Demo\Images\pic31.jpg」のような形です。

URLとパス

URLはwebファイルへのアクセスに使用されます:

http://www.codew3c.com/html5/html5_intro.asp

サーバー上で対応するファイルは以下の通りです:

C:\MyWebSites\htm5\html5_intro.asp

仮想パスは物理パスを表す短縮形です。仮想パスを使用すると、パスを更新しないでウェブページを異なるドメイン(またはサーバー)に移動できます。

URL	http://www.codew3c.com/html/html5_intro.asp
サーバー名	codew3c
仮想パス	/html/html5_intro.asp
物理パス	C:\MyWebSites\codew3c\/html/html5_intro.asp

ディスクドライブのルートディレクトリはC:\と書かれますが、ウェブサイトのルートディレクトリは/(スラッシュ)です。

webフォルダーの仮想パスは、物理フォルダーとは異なることがほとんどです。

コードの内容によっては、物理パスと仮想パスを同時に参照することがあります。

ASP.NETは、フォルダーパスを処理するためのツールを3種類提供しています:~演算子、Server.MapPathメソッド、Hrefメソッド。

~演算子

プログラミングコードで仮想ルートディレクトリを指定する場合は、~演算子を使用してください。

~演算子を使用すると、コードを変更せずに、ウェブサイトを異なるフォルダーや場所に移動することができます:

var myImagesFolder = "~/images";
var myStyleSheet = "~/styles/StyleSheet.css";

Server.MapPath メソッド

Server.MapPath メソッドは仮想パス (/default.cshtml) をサーバーが理解できる物理パス (C:\Johnny\MyWebSited\Demo\default.cshtml) に変換します。

サーバー上に位置するデータファイルを開く必要がある場合、このメソッドを使用します(データファイルは完全な物理パスでアクセスできます):

var pathName = "~/dataFile.txt";
var fileName = Server.MapPath(pathName);

次の章では、サーバー上でデータファイルを読み書きする方法について学びます。

Href メソッド

Href メソッドはコード中のパスをブラウザが理解できるパスに変換します(ブラウザは ~ 操作子を理解できません)。

リソース(例えば画像や CSS ファイル)へのパスを作成するために Href メソッドを使用します。

HTML <a>、<img>、<link> 要素でよく使用される该方法です:

@{var myStyleSheet = "~/Shared/Site.css";}
<!-- CSS ファイルへのリンクを作成する -->
<link rel="stylesheet" type="text/css" href="@Href(myStyleSheet)" />
<!-- 同上 : -->
<link rel="stylesheet" type="text/css" href="/Shared/Site.css" />

Href メソッドは WebPage オブジェクトのメソッドに属しています。