IT박스

ASP.NET 페이지가없는 ResolveUrl

itboxs 2020. 11. 24. 07:47
반응형

ASP.NET 페이지가없는 ResolveUrl


다음과 같은 페이지 또는 컨트롤 인스턴스 ( MSDN Docs )에서와 같이 상대 URL을 확인하는 방법을 찾고 있습니다 .

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

...하지만 HttpHandler에있을 때처럼 HttpContext 만 사용할 수있는 경우.

여기에 표시된 것과 같은 사용자 지정 함수를 사용해야 합니까?

또는 페이지에서 사용하는 기본 기능을 얻을 수있는 방법이 있습니까?


핸들러에서 페이지를 가져 와서를 사용 ResolveUrl하거나 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 : Using System.Web.UI.Control.ResolveUrl () in a shared / static function ) 에 대한이 질문 은 일종의 도움이됩니다 ... 기본적으로 System.Web 아래에있는 VirtualPathUtility 클래스를 사용할 수 있습니다. 네임 스페이스. QueryString 매개 변수를 조심하라는 질문에 대한 추가 답변이 있지만 이에 대한 해결책도 제공됩니다.

동시에 Rick Strahl의 코드는 매우 깔끔합니다!


다음과 같이 사용하십시오. Controls는 응용 프로그램의 폴더 이름이고 myController는 컨트롤러 이름입니다. 컨트롤러를 생성하고 인스턴스화하고로드하려면 다음과 같이 할 수 있습니다.

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

도움이 되었기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/4893380/resolveurl-without-an-asp-net-page

반응형