반응형
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
반응형
'Development Tip' 카테고리의 다른 글
"이 설치에서는 프로젝트 유형이 지원되지 않습니다."오류 (0) | 2020.11.01 |
---|---|
Django의 forms.Form과 forms.ModelForm (0) | 2020.11.01 |
ImportError : mock이라는 모듈이 없습니다. (0) | 2020.11.01 |
HttpClient 요청에서 IOException 발생 (0) | 2020.11.01 |
각 Docker 이미지에 대한 레이어 및 레이어 크기 찾기 (0) | 2020.11.01 |