質問

私は、ページまたはコントロールインスタンスを使用して、相対的な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"));

お役に立てれば。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top