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에서 번역되지 않는 것으로 알고 있습니다.그물.
이 함수는 서버가 아닌 요소의 경로를 확인하는 데도 사용할 수 있습니다.
VirtualPathUtility.ToAbsolute($"~/App_Themes/Default/Icons/myimage.gif")
ASP.NET에서 웹 경로 및 타일 "~" 사용
~/HTML, CSS 또는 JavaScript 경로 시스템의 일부가 아닙니다.~/는 ASP.NET 또는 타사 제품만 사용하는 인공 경로 확인 문자입니다.~/는 서버에서 실행 중인 코드에 의해 새 경로로 변환되는 웹 서버 전용 경로입니다.~/는 IIs Windows Server의 ASP.NET에 웹 사이트의 "응용 프로그램 루트"를 찾도록 알리는 문자입니다.~/서버에서 지정된 AppDomain에 의해 제어되는 ASP.NET 웹 응용 프로그램의 가상 또는 응용 프로그램 루트를 찾아 해당 새 가상 루트에서 이를 해결하도록 서버에 지시하기 때문에 "가상 경로"로 해결됩니다.~/대부분의 경우 경로가 호출될 때 어떤 페이지나 하위 폴더에 있든 상관없이 도메인 바로 뒤에 있는 모든 웹 사이트의 웹 루트로 해결됩니다.거의 모든 경우에 이것은 다음과 같이 해결됩니다./따라서 설정하지 않는 한 두 가지는 대부분의 경우 동일합니다.Virtual Application서버에 있습니다.~/당신의 웹사이트가 하나 이상을 사용할 때만 유용합니다.Virtual ApplicationsIIs와 같은 웹 서버에서.이러한 응용프로그램은 실제로 존재하지는 않지만 서버에서 관리하는 별도의 응용프로그램 및 프로세스를 나타내는 웹 루트 아래에 새 폴더 또는 경로를 추가하는 웹 도메인 아래의 인공 하위 응용프로그램입니다.이로 인해 종종 하나 이상의 가상 응용 프로그램 폴더가 II의 도메인 아래에 생성되며, 이 폴더는 하나의 도메인 아래에서 ASP.NET 웹 사이트의 별도 인스턴스를 실행할 때 관리됩니다.아래 참조...- Microsoft를 하고 있습니다.NET에서 현재 사용 중
~/Routing Attribute 경로에 있습니다.사용할 경우 절대 경로로 웹 루트에서 경로를 다시 시작하지만 모든 컨트롤러 또는 다른 속성 경로를 재정의하기도 합니다.
가상 웹 애플리케이션
예전에는 동일한 도메인을 사용하는 하나 이상의 웹 '경험'을 분리하기 위해 두 개 이상의 웹 경로를 추가로 생성하기 위해 IIs 웹 서버에 가상 애플리케이션을 생성하곤 했습니다.각 가상 경로는 웹 루트를 다시 가리키지만 웹 루트 아래에 추가 Ghost 폴더를 만드는 "고스트" 경로일 수 있습니다.대부분의 경우 이 새로운 가상 경로는 일반 웹 경로 또는 컴퓨터 하드 드라이브 경로 또는 매핑과 별개의 물리적 폴더를 가리켰습니다. ASP.NET은 적절한 권한을 가지고 거기서 웹 사이트 코드를 실행했습니다.그러면 웹 도메인 방문자에게 표시되는 새 가상 경로가 기본 사이트의 일부로 나타나지만 ASP.NET에서 실행되는 별도의 프로세스(별도의 AppPool 또는 worker 프로세스)를 사용하여 웹 응용 프로그램의 두 번째 인스턴스를 실행합니다.
~/그런 경우에 매우 유용했습니다.경로 확인에 사용되었으며 서버에서 생성한 새 가상 응용 프로그램 루트 또는 경로의 루트에 쉽게 매핑되므로 ASP.NET 코드의 경로를 변경하지 않고 하나의 웹 사이트에서 여러 응용 프로그램을 실행할 수 있습니다.그런 다음 서버 측 코드는 코드 기반을 변경하지 않고 각 가상 응용 프로그램 내부의 경로를 확인합니다.
~/이러한 환경에서는 웹 루트가 서로 다른 하나의 웹 사이트에서 여러 가상 웹 애플리케이션을 실행하는 경우 각 애플리케이션에 대해 웹 애플리케이션의 여러 경로를 더 이상 관리할 필요가 없으므로 매우 유용했습니다.다음을 사용하여 각 응용 프로그램에서 항상 새 루트를 찾을 수 있습니다.~/항상 있었던 진정한 웹 루트보다는.http://example.com/
예
ASP를 사용하는 ASP.입니다.NET에서 다음을 사용하는 대부분의 경로~/ 결심합니다./가상 응용 프로그램이 없는 일반 웹 사이트에서 모든 경로가 아래 URL의 웹 루트를 가리킵니다.대부분의 경우 ASP.NET이 중복되는 이유입니다.그냥 사용하기/ 가지 모두를 가리킵니다. " 가 모 가 다 니 리 킵 를 루 트 두 웹 지 두 다 니 : ▁both 킵 가 ▁root ▁web▁the
https://example.com/
그러나 아래 예제에서 알 수 있듯이 도메인에 가상 디렉터리를 추가한 경우~/각각의 개별 웹 애플리케이션 내부에서는 두 개의 서로 다른 웹 루트로 해결됩니다.
https://example.com/virtualapplication1/
https://example.com/virtualapplication2/
ASP.NET 초기에는 글로벌 변수에 저장된 아래 코드를 사용하여 항상 응용 프로그램 경로를 파악했습니다.이를 통해 웹 애플리케이션이 어디로 이동되었는지에 관계없이 도메인 루트 또는 가상 루트의 상대적인 애플리케이션 웹 루트에서 모든 경로를 완전히 제어할 수 있었습니다.하지만 이 길은~/할 수 더 수 있습니다.그러나 서버에서 동적으로 경로를 작성할 수 있으므로 더 나을 수 있습니다.
var myWebRoot = HttpContext.Current.Request.ApplicationPath;
제 의견은 도메인이 저렴하고 하위 도메인이 자주 사용되기 때문에 오늘날 이와 같은 가상 애플리케이션은 거의 사용되지 않는다는 것입니다.
https://app1.example.com/
https://app2.example.com/
웹는 가능한 ./예외는 페이지 소스 페이지 또는 내부적으로 호출하는 코드와 관련된 CSS 경로입니다.많은 사람들은 그것들을 옮기면 절대적인 웹 경로가 깨진다는 것을 의미한다고 말합니다.하지만 저는 당신이 왜 당신의 웹사이트의 루트를 참조하고 갑자기 그것을 변경할 필요가 있다고 주장합니다.이 경우 서버 측에서 관리하고 HTML 및 JavaScript에 주입해야 합니다.
둘째로, 유닉스 기반의 많은 오픈 소스 공급업체들은 HTML과 CSS가 지원하지 않는 점 경로로 비틀거리는 자바스크립트 API 라이브러리를 만들고 있습니다../또는.
이는 호출 코드가 있는 로컬 폴더 또는 동일한 폴더를 가리키는 UNIX 규칙입니다.NO PATH와 동일한데 왜 사용합니까?사용 사례가 있지만 웹 경로에 영향을 미치지 않는 최종 결과입니다.그래서 저는 그들의 사용을 피할 것입니다.JavaScript에서 안정적으로 작동하는 유일한 위치는 ECMA스크립트의 새로운 JavaScript 모듈입니다.그러나 Google Angular와 같은 독점 API에서는 이들이 필요합니다.
를 들어 하는 이러한 두 경로는 다음과 . UNIX 로컬 경로는 다음과 같습니다../또는.HTML에서 둘 다 실패하고 누락된 이미지 오류를 만듭니다.
// These return broken image icons in browsers when using
// these unconventional UNIX local dot path conventions on the Web:
<img id="image1" src="./images/image1.png" />
<img id="image2" src="/images/.image2.png" />
따라서 이러한 모든 일탈 경로 시스템을 피하고 절대적인 HTML 경로를 고수하면 당신의 코드는 앞으로 수십 년 동안 항상 작동할 것입니다.
타일을 제거하고 슬래시만 사용하면 동일한 결과를 얻을 수 있습니다. 즉, 현재 도메인의 루트 폴더를 가리킵니다.
<a href="/BusinessOrderInfo/page.aspx" >
언급URL : https://stackoverflow.com/questions/3077558/use-of-tilde-in-asp-net-path
'programing' 카테고리의 다른 글
| Oracle 테이블 열 이름(공백 포함 (0) | 2023.06.15 |
|---|---|
| Ruby에서 셸 명령을 호출하는 방법 (0) | 2023.06.15 |
| Python 속도 테스트 - 시간 차이 - 밀리초 (0) | 2023.06.15 |
| Excel VBA 시계 창에서 사전의 값을 모니터링하는 방법은 무엇입니까? (0) | 2023.06.15 |
| Python - TypeError: 'int64' 유형의 개체는 JSON 직렬화할 수 없습니다. (0) | 2023.06.15 |