Development Tip

asp.net 경로에서 물결표 (~) 사용

yourdevel 2020. 11. 1. 18:45
반응형

asp.net 경로에서 물결표 (~) 사용


나는 asp.net 앱에서 작업 중이며 다음 링크는 IE에서 작동하지만 FF에서는 작동하지 않습니다.

<a href="~/BusinessOrderInfo/page.aspx" >

asp.net 서버 컨트롤에서만 사용할 수있는 물결표가 아닙니다. 실제 경로로 대체되는 곳은 어디입니까?

앵커 태그에 물결표를 사용할 수 있습니까? 그렇다면 그것은 무엇을 의미합니까?

내가 루트에있을 때 링크가 작동합니다.

www.myserver.com/default.aspx, click the link, ok!

www.myserver.com/otherpart/default.aspx, click the link, not ok!

ASP.NET에서 생성 된 링크는 다음과 같습니다.

www.myserver.com/otherpart/~BusinessOrderInfo/page.aspx

이것은 의도 된 것입니까?


맞습니다. 서버 컨트롤에서만 작동합니다. 다음과 같은 기본 옵션이 있습니다.

웹 컨트롤HyperLink 로 실행 하도록 변경 :

<asp:HyperLink NavigateUrl="~/BusinessOrderInfo/page.aspx" Text="Whatever" runat="server" />

또는 서버 측에서 앵커를 HTML 컨트롤 로 실행합니다 .

<a href="~/BusinessOrderInfo/page.aspx" runat="server" >

또는 다음을 사용하십시오 Page.ResolveUrl.

<a href="<%= Page.ResolveUrl("~/BusinessOrderInfo/page.aspx") %>">...</a>

HTML 컨트롤은 runat = "server"속성을 추가하여 서버 컨트롤로 변환 할 수 있습니다.

<a href="~/BusinessOrderInfo/page.aspx" runat="server">

물결표는 응용 프로그램 루트 디렉터리를 나타내며 NavigateUrl과 같은 컨트롤 속성에서 올바르게 변환됩니다.

내 이해는 일반 HTML 태그에서 사용하면 ASP.Net에서 번역되지 않는다는 것입니다.


물결표를 제거하고 슬래시 만 사용하면 동일한 결과를 얻을 수 있습니다. 즉, 현재 도메인의 루트 폴더를 가리 킵니다.

<a href="/BusinessOrderInfo/page.aspx" >

이 함수는 서버 요소가 아닌 경로를 확인하는데도 사용할 수 있습니다.

VirtualPathUtility.ToAbsolute($"~/App_Themes/Default/Icons/myimage.gif")

참고 URL : https://stackoverflow.com/questions/3077558/use-of-tilde-in-asp-net-path

반응형