我正在尋找一種方法來解決相對URL你會的方式與某個網頁或控制實例(MSDN Docs)如:RESOLVEURL沒有一個ASP.NET頁
Page.ResolveUrl("~/common/Error.aspx");
...但是當我只有HttpContext可用於我,例如當我在HttpHandler中時。
我需要使用自定義函數嗎,例如看到的那個?here?
或者有沒有辦法讓頁面使用的基礎功能。
我正在尋找一種方法來解決相對URL你會的方式與某個網頁或控制實例(MSDN Docs)如:RESOLVEURL沒有一個ASP.NET頁
Page.ResolveUrl("~/common/Error.aspx");
...但是當我只有HttpContext可用於我,例如當我在HttpHandler中時。
我需要使用自定義函數嗎,例如看到的那個?here?
或者有沒有辦法讓頁面使用的基礎功能。
嘗試從處理程序獲取頁面,並使用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
SO上的這個問題(ASP.Net: Using System.Web.UI.Control.ResolveUrl() in a shared/static function)看起來很有幫助......基本上,您可以使用System.Web名稱空間下的VirtualPathUtility類。這個問題還有一個額外的答案,它表示要小心QueryString參數,但也提供瞭解決方案。
與此同時,裏克斯特拉爾的代碼非常整齊!
使用類似這樣的東西 - Controls是應用程序中的文件夾名稱,myController是控制器名稱。創建和實例和加載控制器,你可以做到這一點:
Controls_myController ctrl = Page.LoadControl(Page.ResolveUrl("controls/myController.ascx"));
希望這會有所幫助。
哪***好模式和做法***? `System.Web.VirtualPathUtility`,`HttpContext.Current.Handler`或`Rick Strahl's code`? – Kiquenet 2016-05-04 12:20:22