2016-08-18 5 views
0

複数のサイトを持つWebサーバーに公開されるASP.NET Webサイトがあります。たとえば、次のように複数サイトのWebサーバーとローカルホストでの相対パスの指定

www.example.com/SiteAまたはwww.example.com/SiteB

プラス私は、例えば、画像のパスを指定する場合、私はまたlocalhost:12345

で、たとえば、公開する前にローカルでサイトをテスト:/Images/exampleImage.gif、実行している場合、これは動作しますImagesフォルダはルートディレクトリにあるため、ローカルにサイトを作成します。この場合正しいパスはlocalhost:12345/Images/exampleImage.gifです。

しかし、Webサーバーに公開すると、たとえばwww.example.com/SiteAになると、同じパスがwww.example.com/Images/exampleImage.gifに行き着き、画像が正しく表示されません。

また、ASPコントロールと同様に、これはHTMLコントロールのみに使用されています。チルド(~/Images/exampleImage.gif)を使用すると、www.example.com/SiteA/Images/exampleImage.gifというサイトのルートディレクトリを調べることができます。

私の場合は、HTMLコントロールを使用することを強くおすすめします。

編集:私はdiv要素が隠されている場合に基づいてHTMLのIMGコントロールのイメージを変えるJavaScriptを持っているので、この理由は次のとおりです。私はimagesフォルダへのパスを得ることができる方法

function Toggle(commId, imageId) { 
    var div = document.getElementById(commId); 
    var img = document.getElementById(imageId); 
    if (div.style.display == 'none') { 
     div.style.display = 'inline'; 
     img.src = "/Images/minus.gif"; 
    } else { 
     div.style.display = 'none'; 
     img.src = "/Images/plus.gif"; 
    } 
} 

を、サーバー上の各サイトのフォルダがあるときにサイトのルートに関連して、ローカルホスト上で作業していますか?

答えて

0

私は、JavaScriptの組み込みC#のコードを入れることができます知っているが、ちょうどやってそれを考え出していない:

function Toggle(commId, imageId) { 
    var div = document.getElementById(commId); 
    var img = document.getElementById(imageId); 
    if (div.style.display == 'none') { 
     div.style.display = 'inline'; 
     img.src = "<%= ResolveUrl("~/Images/minus.gif") %>"; 
    } else { 
     div.style.display = 'none'; 
     img.src = "<%= ResolveUrl("~/Images/plus.gif") %>"; 
    } 
} 

ResolveUrl方法は、パス値のチルダ(〜)を取り、知っていることができますので、サーバー上のWebルートディレクトリ。

img htmlコントロール(および他の属性/コントロール)のsrc属性に直接同じResolveUrlメソッドを組み込んだコードを使用することもできます。

0

イメージを含むサーバー上で「〜/ Images」という新しい仮想ディレクトリを公開するにはコードを使用する必要があります。

関連する問題