2008-09-04 3 views
9

나는/자바 스크립트 폴더에있는 모든 자바 스크립트 파일을 가지고있는 C#/ASP.NET 프로젝트를 만들고있다. 이 구문을 사용하여 JS 파일을 참조하는 경우 : src = "/ Javascript/jsfile.js"그러면 프로젝트가 URL의 루트에 배포 된 경우 파일이 올바르게 선택됩니다.어떻게 자바 스크립트 파일을 참조합니까?

그러나이 "웹 사이트"가 기본 URL의 하위 폴더에 배포되면 작동하지 않습니다. 그래서 해결책은 상대적 URL을 사용하는 것일 수 있습니다.하지만 마스터 페이지가 많은 자바 스크립트 파일을 참조하기 때문에 이러한 문제가 있습니다. 이러한 마스터 페이지는 루트 및 하위 폴더의 여러 페이지에서 사용할 수 있습니다.

누구든지 해결할 아이디어가 있습니까?

답변

11

"runat = server"섹션에서 JS 파일을 참조하면 src = "~/Javascript/jsfile.js"라고 쓸 수 있으며 항상 작동합니다.

또한 (당신의 masterpage에서)를 Page_Load에서이 작업을 수행 할 수 있습니다 :

Page.ClientScript.RegisterClientScriptInclude("myJsFile", Page.ResolveClientUrl("~/Javascript/jsfile.js")) 
4

는 마스터 페이지에서이 같은 시도 : 어떤 이유로

<script type="text/javascript" src="<%= Response.ApplyAppPathModifier("~/javascript/globaljs.aspx") %>"></script> 

을, 내가 발견 한 브라우저가 최종 태그에 대해 매우 까다롭기 때문에 />로 태그를 끝내면 작동하지 않는 것 같습니다.

0

@ Jared : IE에는/script가 필요합니다. FF는 상관하지 않습니다.

4

ASP.NET의 새로운 버전 (3.5 SP1)에는 CompositeScript이라는 유용한 기능이 있습니다. 이렇게하면 ScriptManager을 사용하여 서버 측의 많은 작은 .js 파일을 참조하고 단일 .js 파일로 클라이언트에 전달할 수 있습니다.

하나의 파일 만 다운로드하면되므로 클라이언트에게 좋습니다. 서버 측에서 원하는 파일을 유지 관리 할 수 ​​있기 때문에 유용합니다.

<asp:ScriptManager ID="ScriptManager1" 
    EnablePartialRendering="True" 
    runat="server"> 
    <Scripts> 
     <asp:ScriptReference 
      Assembly="SampleControl" 
      Name="SampleControl.UpdatePanelAnimation.js" /> 
    </Scripts> 
</asp:ScriptManager> 
0

당신은 FileResolver를 살펴 할 수 있습니다. 그것은 당신이 할 수있는 HTTP 처리기입니다 :

<link rel="stylesheet" href="~/resources/stylesheet.css.ashx" /> 

그리고 물결표 (뿐만 아니라 파일 내의 모든 물결표)가 제대로 확장이있다.

관련 문제