2011-02-04 38 views
55

我正在尋找一種方法來解決相對URL你會的方式與某個網頁或控制實例(MSDN Docs)如:RESOLVEURL沒有一個ASP.NET頁

Page.ResolveUrl("~/common/Error.aspx"); 

...但是當我只有HttpContext可用於我,例如當我在HttpHandler中時。

我需要使用自定義函數嗎,例如看到的那個?here

或者有沒有辦法讓頁面使用的基礎功能。

回答

16

SO上的這個問題(ASP.Net: Using System.Web.UI.Control.ResolveUrl() in a shared/static function)看起來很有幫助......基本上,您可以使用System.Web名稱空間下的VirtualPathUtility類。這個問題還有一個額外的答案,它表示要小心QueryString參數,但也提供瞭解決方案。

與此同時,裏克斯特拉爾的代碼非常整齊!

+0

哪***好模式和做法***? `System.Web.VirtualPathUtility`,`HttpContext.Current.Handler`或`Rick Strahl's code`? – Kiquenet 2016-05-04 12:20:22

0

使用類似這樣的東西 - Controls是應用程序中的文件夾名稱,myController是控制器名稱。創建和實例和加載控制器,你可以做到這一點:

Controls_myController ctrl = Page.LoadControl(Page.ResolveUrl("controls/myController.ascx")); 

希望這會有所幫助。