ASP.NETページなしでResolveurl
-
28-10-2019 - |
質問
私は、ページまたはコントロールインスタンスを使用して、相対的なURLを解決する方法を探しています(MSDNドキュメント) そのような:
Page.ResolveUrl("~/common/Error.aspx");
...しかし、私がHTTPHANDLERにいるときなど、私が利用できるhttpContextだけを持っているとき。
見たようなカスタム関数を使用する必要がありますか ここ?
または、ページで使用される根本的な関数を取得する方法はありますか。
解決
ハンドラーからページを取得して使用してみてください ResolveUrl
, 、またはコントロールオブジェクトを作成します...
(HttpContext.Current.Handler as Page).ResolveUrl("~/virtualpath");
または使用します VirtualPathUtility.ToAppRelative(string)
また VirtualPathUtility.ToAbsolute(string)
例えば:
System.Web.VirtualPathUtility.ToAbsolute("~/Styles/Contoso.xslt");
戻り値
/WebSite/Styles/Contoso.xslt
他のヒント
この質問はそうです(ASP.NET:System.Web.ui.Control.Resolveurl()を共有/静的関数で使用)一種の親切に見えます...基本的に、あなたは VirtualPathutility システムの下にあるクラス。WebNamespace。その質問に対する追加の答えがありますが、クエリストリングパラメーターに注意することを示すが、その解決策も提供されています。
同時に、Rick Strahlのコードはかなりきれいです!
このようなものを使用します - コントロールはアプリケーションのフォルダー名であり、MyControllerはコントローラー名です。コントローラーを作成してインスタンスし、ロードするには、次のことを行うことができます。
Controls_myController ctrl = Page.LoadControl(Page.ResolveUrl("controls/myController.ascx"));
お役に立てれば。
所属していません StackOverflow