次のようなページまたはコントロールインスタンス( MSDN Docs )を使用して相対URLを解決する方法を探しています。
Page.ResolveUrl("~/common/Error.aspx");
...しかし、HttpHandlerを使用している場合など、HttpContextしか使用できない場合。
here のようなカスタム関数を使用する必要がありますか?
または、Pageで使用される基本的な関数を取得する方法はありますか。
ハンドラーからページを取得して ResolveUrl
を使用するか、Controlオブジェクトを作成してください...
_(HttpContext.Current.Handler as Page).ResolveUrl("~/virtualpath");
_
または VirtualPathUtility.ToAppRelative(string)
または VirtualPathUtility.ToAbsolute(string)
を使用します
例えば:
_System.Web.VirtualPathUtility.ToAbsolute("~/Styles/Contoso.xslt");
_
返す
_/WebSite/Styles/Contoso.xslt
_
SO( ASP.Net:共有/静的関数でSystem.Web.UI.Control.ResolveUrl()を使用 )に関するこの質問は、一種の有用に見えます。基本的に、System.Web名前空間の下にある VirtualPathUtility クラスを使用できます。QueryStringパラメータに注意するようにという質問に対する追加の回答がありますが、その解決策も提供されます。 。
同時に、Rick Strahlのコードはとてもきれいです!
このようなものを使用します-Controlsはアプリケーション内のフォルダー名で、myControllerはコントローラー名です。コントローラを作成してインスタンス化し、ロードするには、次のようにします。
Controls_myController ctrl = Page.LoadControl(Page.ResolveUrl("controls/myController.ascx"));
お役に立てれば。