2009-09-19 18 views
18

私はその典型的な仮想ディレクトリのジレンマに実行している問題

あなたはASP.Netアプリケーション上でいくつかのパスを持っていて、IIS仮想でアプリを展開するIISディレクトリ。 "ウェブルート"(f.i.、 "/ images")に関連するすべてのパスは、アプリケーションが仮想ディレクトリパスにあるため動作しません。は、仮想ディレクトリとASP.NETのディレクトリパス


ソリューション

A.は "画像は" 仮想ディレクトリをフォルダ作成します。このように "/ images"は常に存在します。

B.私の画像のソースとして"<%=Request.ApplicationPath%>/Imagenes"を使用してください。これはIISでうまく動作しますが、設計時やデバッグ時には見えません。現在に

  • System.Web.VirtualPathUtility.ToAbsolute
  • ResolveClientUrl
  • Request.ApplicationPath

C.使用親戚パス:

このソリューションはまた、これらの命令を含みますコントロール/ページ。これは、イメージフォルダが現在のファイルとの相対的な位置にあることを正確に知っています(ルートに移動せずに) ""、 "../../"などのように使用します。

私は

を探しています


解決策は、私はこれらのソリューションを好きではない。と言った。私は、web.configファイル内またはIISでソリューションを望む。私は、Webで書くのいくつかのconf intructionを私のアプリケーションは、実際に存在するIISを伝える.configファイル(仮想ディレクトリ)。

何かアドバイス?

答えて

10

がありますあなたはあなたができるパスのチルダ(〜)を使用していますか? 〜は、仮想Webアプリケーションのルートを指す

....例えば

〜/画像。それは、クライアント側のCSSファイルのためだけだ場合は、URLディレクティブを使用すると、スタイルシートのそれとの相対パスではなく、ページを作る

+1

代わりに、非サーバー側のimg要素のために、あなたはのように、根を参照するために、「/」文字を使用することができます。 –

+4

@klabranche、チルダ(〜)はサーバー側のコントロール用で、サーバー側のコードでのみ使用できます(http://msdn.microsoft.com/en-us/library/ms178116.aspx) @DavidAndresスラッシュ "/"は、あなたのアプリケーションがWebサイトのルートにあることを前提としています(仮想ディレクトリではありません)。 (http://msdn.microsoft.com/en-us/library/ms178116。aspx) >サイトルートの相対パスで、サイトルート(アプリケーションルートではありません)に対して解決されます。 –

+1

@dealmo - 私はあなたができるところを言った...私はあなたがあなたのリストにあなたの代わりのアプローチを探していることを理解しています。私はちょうど少なくともあなたができるところでできることをしていることを確認していました。 :) – klabranche

3

h1#title { background: url('dog.gif') no-repeat 0 0; } 

また、あなたがasp.netにしている場合MVCは、あなたはへのアクセス権を持っている:

<script src="<%= Url.Content("~/scripts/new.js") %>" type="text/javascript"></script> 
+0

私はこのソリューションを "テーマとスキン"との組み合わせでパスを使わずに使用し、イメージをスタイルシートと並んでテーマディレクトリに配置します。 –

関連する問題