多分これが最善の方法ではありませんが、それは動作します。
// Here is your path
String p = photosLocation + "whatever.jpg";
// Here is the page address
String pa = Page.Request.Url.AbsoluteUri;
// Take the page name
String pn = Page.Request.Url.LocalPath;
// Here is the server address
String sa = pa.Replace(pn, "");
// Take the physical location of the page
String pl = Page.Request.PhysicalPath;
// Replace the backslash with slash in your path
pl = pl.Replace("\\", "/");
p = p.Replace("\\", "/");
// Root path
String rp = pl.Replace(pn, "");
// Take out same path
String final = p.Replace(rp, "");
// So your picture's address is
String path = sa + final;
編集:いいえ、誰かが役に立たないとマークしました。いくつかの説明:現在のページの物理的なパスを取って、サーバーとディレクトリ(c:\ inetpub \ whatever.com \ whateverなど)とページ名(/Whatever.aspxなど)の2つの部分に分割します。イメージの物理パスにはサーバーのパスが含まれている必要があります。つまり、それらを「差し引いて」、サーバーの相対パスのみを残します(\ design \ picture.jpgなど)。バックスラッシュをスラッシュに置き換え、サーバーのURLに追加します。
.Net版のドキュメントでは、HttpRequestのResolveUrlメンバーが見つかりません。 ASP.Net MVCを使用していますか? – Jared
@Fredrik Jaredは、HttpRequestオブジェクトにはこのメソッドがないことを指摘しています。これは、PageオブジェクトまたはWebコントロールオブジェクトにあります。これを反映するためにあなたの答えを編集できますか? –
'ResolveUrl'は' System.Web.HttpRequest'のメンバーではありません – adripanico