没有ASP.NET页面的ResolveUrl
我正在寻找一种方法来解决您的页面或控件实例( MSDN文档 )的方式相对的url,如:
Page.ResolveUrl("~/common/Error.aspx");
…但是当我只有一个HttpContext可用于我,如当我在一个HttpHandler。
我是否需要使用自定义函数,比如这里看到的函数?
或者是有一种方法来获得页面使用的基础function。
尝试从处理程序中获取页面并使用ResolveUrl
,或者创build一个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参数,但也提供了一个解决scheme。
同时,Rick Strahl的代码非常整洁!
使用这样的东西 – Controls是你的应用程序中的文件夹名称,myController是控制器名称。 创build和实例化并加载控制器,你可以通过以下方式来完成:
Controls_myController ctrl = Page.LoadControl(Page.ResolveUrl("controls/myController.ascx"));
希望这可以帮助。