ASP.Net 및 Masterpages에서 상대 파일 경로 처리
-
08-07-2019 - |
문제
이것은 제가 조롱할 만큼 고통스럽고 간단한 질문일 수 있지만 마스터 페이지에서 파일 경로를 사용하는 데 어려움을 겪고 있습니다.마스터페이지를 사용하기 위한 하위 디렉터리의 페이지가 있는 경우 파일 경로가 올바르지 않기 때문이라고 생각합니다.
이 문제를 해결하려면 루트에서 파일 경로를 가져와야 하는데 제대로 작동하지 않는 것 같습니다.
나는 시도했다:
<script type="text/javascript" src="~/jQueryScripts/jquery.js"></script>
그리고
<script type="text/javascript" src="../jQueryScripts/jquery.js"></script>
둘 중 하나에도 행운이 없습니다!
루트에서 파일 경로를 가져오도록 지시하는 방법에 대한 아이디어가 있습니까?감사해요 :)
해결책
나는 단지 FilePath에 의해 가정하고 있습니다. 당신은 실제로 URL을 의미합니다 (또는 URI, 어느 것이 부분인지 잊어 버립니다).
~가 없으면 첫 번째 예제가 작동해야합니다. <script type="text/javascript" src="/jQueryScripts/jquery.js"></script>
브라우저가 요청하게됩니다 http://www.example.com/jqueryscripts/jquery.js (여기서 www.example.com이 당신의 도메인).
다른 팁
Ajax 지원 사이트를 실행하는 경우 내 답변을 참조하십시오. 2008 년 중첩 마스터 페이지에서 JavaScript에 대한 상대적 참조를 포함하는 선호하는 방법.
나는 당신이 가야한다고 생각합니다 runat=server
에서 <head>
태그의 태그 MasterPage
이 URL을 위해 작동하기 위해.
<head runat="server">
먼저 앞에 있는 물결표는 서버 컨트롤에 사용하기 위한 asp.net이며 기본 HTML에서는 작동하지 않습니다.
자세한 설명 없이 앞에 슬래시(/)를 사용하고 루트 사이트가 아닌 경우 웹 앱 이름을 포함하면 됩니다.
또는 스크립트를 동적으로 포함하기 위해 마스터 페이지에 코드를 삽입하고 경로 지정을 처리하도록 할 수 있습니다.좋다:
public void AddJavascript(string javascriptUrl)
{
HtmlGenericControl script = new HtmlGenericControl("script");
script.Attributes.Add("type", "text/javascript");
javascriptUrl += "?v" + Assembly.GetExecutingAssembly().GetName().Version;
script.Attributes.Add("src", ResolveUrl(javascriptUrl));
Page.Header.Controls.Add(script);
}
위 코드는 어셈블리 버전도 추가합니다.나는 이것을 주로 개발에 사용하므로 빌드할 때마다 자바스크립트 파일이 업데이트됩니다.
당신은 사용할 수 있습니다 page.resolveUrl 이것을 돌아 다니는 방법
예를 들어:
<script type="text/javascript" src="<%=Page.ResolveUrl("~/jQueryScripts/jquery.js")%>"></script>