cwe*_*ton 63 .net c# asp.net resolveurl
我正在寻找一种解决相对URL的方法,就像你使用页面或控件实例(MSDN Docs)一样,例如:
Page.ResolveUrl("~/common/Error.aspx");
Run Code Online (Sandbox Code Playgroud)
...但是当我只有一个HttpContext可用时,例如当我在HttpHandler中时.
我是否需要使用自定义功能,例如此处显示的功能?
或者有没有办法获得Page使用的底层函数.
Bru*_*oLM 106
尝试从处理程序获取页面并使用ResolveUrl
,或创建一个Control对象...
(HttpContext.Current.Handler as Page).ResolveUrl("~/virtualpath");
Run Code Online (Sandbox Code Playgroud)
或者使用VirtualPathUtility.ToAppRelative(string)
或VirtualPathUtility.ToAbsolute(string)
例如:
System.Web.VirtualPathUtility.ToAbsolute("~/Styles/Contoso.xslt");
Run Code Online (Sandbox Code Playgroud)
回报
/WebSite/Styles/Contoso.xslt
Run Code Online (Sandbox Code Playgroud)
dav*_*eps 17
关于SO的这个问题(ASP.Net:在共享/静态函数中使用System.Web.UI.Control.ResolveUrl())看起来很有帮助......基本上,你可以使用System.Web下的VirtualPathUtility类.命名空间.这个问题有一个额外的答案,它说要小心QueryString参数,但也提供了解决方案.
与此同时,Rick Strahl的代码非常整洁!