[asp.net] ASP.Net 마스터 페이지 및 파일 경로 문제

모든 페이지에서 작동하도록 마스터 페이지에서 jQuery에 대한 스크립트 참조를 추가하려고합니다. 현재는 다음과 같습니다.

<script type="text/javascript" src="jquery.js"></script>

문제는 경로가 항상 실행중인 aspx 페이지에 상대적이므로 “jquery.js”파일이 동일한 폴더에있는 경우에만 작동한다는 것입니다. 작동하려면 라인을 다음과 같이 변경해야합니다.

<script type="text/javascript" src="../../jquery.js"></script>

이것은 루트 폴더에서 두 수준 깊이의 페이지에서만 작동하기 때문에 분명히 이상적이지 않습니다. 다음을 시도하면 IIS에서 예기치 않은 문자에 대한 오류가 발생합니다.

<script runat="server" type="text/javascript" src="~/jquery.js"></script>

어떤 아이디어?

편집 : 스크립트가 헤드 태그에 있어야 함을 언급하는 것을 잊었습니다 .

현재 최상위 답변은 마스터 페이지에 추가 할 때 ” ASP.NET Ajax 클라이언트 측 프레임 워크를로드하지 못했습니다. “오류를 표시합니다. .Net 컴파일러가 아닌 javascript에서 발생합니다. ScriptManager를 헤드 섹션으로 이동하면 ScriptManager가 form 태그 안에 있어야한다는 컴파일 오류가 발생합니다.

세 번째 대답은 ” 경로에 잘못된 문자가 있습니다. “컴파일러에서 예외가 발생 합니다.

편집 2 : 내 머리 태그에 해당 줄을 추가하면 IIS 에서이 오류가 발생합니다.

컨트롤에 코드 블록 (예 : <% … %>)이 포함되어 있기 때문에 Controls 컬렉션을 수정할 수 없습니다.

해결 : 아래 답변에서 편집 된 응답을 가져 와서 asp : ContentPlaceHolder 요소에 넣었습니다 .



답변

다음을 사용할 수 있습니다 ScriptManager.

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/jquery.js" />
    </Scripts>
</asp:ScriptManager>

편집 : 섹션 에서 절대적으로 필요한 경우 <head>다음과 같이 할 수 있습니다.

<head>
    <script type="text/javascript"
        src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>

편집 2 : 의견에 따르면 그것을 관찰하는 경우

컨트롤에 코드 블록 (예 : <% … %>)이 포함되어 있기 때문에 Controls 컬렉션을 수정할 수 없습니다.

데이터 바인딩 구문을 사용하려면 위의 내용을 변경해야 할 수 있습니다.

<head>
    <script type="text/javascript"
        src="<%# Page.ResolveClientUrl("~/jquery.js") %>"></script>
</head>


답변

헤드 섹션 아래의 마스터 페이지 <%#대신 시도<%=

<script type="text/javascript"
        src="<%# ResolveUrl("~/YourScriptFolder/YourJQueryOrJavascript.js") %>">
</script>

그런 다음 Page_Load이벤트 아래 마스터 페이지의 코드 비하인드에서

Page.Header.DataBind();

이제 ResolveUrlCSS, JavaScript, jQuery를 처리하려는 파일 의 경로를 변경하기 만하면 CSS뿐만 아니라 jQuery와 JavaScript를 사용할 수 있습니다 .


답변

asp : ScriptManager 또는 절대 경로에 가지 않으려면 다음과 같이 할 수 있습니다.

<script runat="server" type="text/javascript"
  src='<%= Page.ResolveUrl("~/jquery.js") %>'></script>


답변

나는 너희들이 당신의 문제에 대한 해결책을 찾았는지 여부를 모른다. 나는 같은 문제에 직면했고 내가 사용하는 플러그인에서 “jQuery is undefined”오류가 발생하는 이유를 알아 내기 위해 미쳐 버렸다. 나는 인터넷에서 얻은 모든 솔루션을 시도했지만 전혀 운이 없었습니다.

그러나 갑자기 스크립트 파일이 순서가 될 수있는 무언가가 내 마음에 스플래시됩니다. 그래서 jquery 참조를 첫 번째 위치로 옮겼고 모든 것이 매력처럼 작동하기 시작합니다.

jquery와 함께 플러그인을 사용하는 경우 해당 파일에 대한 참조를 설정하는 다음 순서를 사용하는지 확인하십시오.

  1. jquery 라이브러리에 대한 참조
  2. 다른 후속 플러그인 라이브러리에 대한 참조 등 …

예 :

  1. “script src =”js / jquery-1.3.2.min.js “type =”text / javascript “…
  2. “script src =”js / jqDnR.min.js “type =”text / javascript “…
  3. “script src =”js / jquery.jqpopup.min.js “type =”text / javascript “…
  4. “script src =”js / jquery.bgiframe.min.js “type =”text / javascript “…

항상 jquery 참조를 먼저 넣은 다음 후속 라이브러리에 넣어야합니다.

희망, 이것은 특히 MasterPages와 함께 사용할 때 문제를 해결합니다. MasterPages를 사용하지 않을 때 사용하는 순서에 관계없이 작동하는 것이 매우 이상하지만 사용하면 어떻게 든 적절한 순서가 필요합니다.

행운과 행복한 코딩,

빈센트 디 수자


답변

“/”루트를 실행하는 방법 . 이렇게하면 해결되지 않은 .js파일 경로 와 관련된 모든 문제가 해결 됩니다. 기본적으로 이름 확인이 IIS에서와 동일한 방식으로 작동하는 것과 localhost:port/달리 애플리케이션을 실행하도록 기본적으로 VS Dev 서버를 재구성합니다 localhost:port/application name/.


답변

모든 페이지에 대한 파일의 절대 경로는 다음을 사용하십시오.

<script type="text/javascript" src="<%= Page.ResolveClientUrl("~/jquery.js") %>"></script>


답변

<script type="text/javascript" src="/full/path/to/jquery.js"></script>