2009-06-04 4 views
6

기본 ASP.net MVC 프로젝트를 만들었습니다. 마스터 페이지에서 내가 최고asp.net MVC에 js 파일을 포함시키고 모든 경로에 유효한 경로가있는 방법

에 다음 한
<head runat="server"> 
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
</head> 
그때 자바 스크립트 파일을 추가해야하고 페이지에 솔루션 탐색기에서 파일을 드래그하여 다음과 같은 라인을 추가

:

<head runat="server"> 
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
</head> 
나는이 사이트에 액세스하고 브라우저에서 HTML을 볼 때

나는이를 참조하십시오

<head><title> 

    Index 

</title><link href="Content/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="../../Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> 
</head> 

상대 경로가 고정 된 CSS 파일하지만 JS 파일이 아닙니다. 사이트는 내 개발 상자에있는 루트가 아닌 서버의 다른 폴더에 배포됩니다.

적절한 방법이 있습니까?

답변

16

사용하는 URL 도우미 :

<script type="text/javascript" src="<%=Url.Content("~/Content/script/MyFile.js")%>"></script> 

희망

을하는 데 도움이
+0

이렇게하면 ~가 사이트 루트에 대한 경로로 바뀌어 사이트를 하위 디렉토리에 설치하는 문제가 해결됩니다. 그러나 루트에 도착하면 js 파일은 루트 아래의 Scripts 폴더에 있지만 ../../Scripts는 남아 있지 않은 문제가 있습니다. MVC는 다른 하위 폴더로 라우팅하므로 모든 경로에서 스크립트를 사용할 수있는 것은 아닙니다. 적어도 이제는 루트와 관련된 경로를 하드 코딩하는 방법이 있으므로 +1을주었습니다. 하지만 누군가 JS가 아닌 상자에서 CSS로 작동하는 이유를 설명 할 수 있는지 기다릴 것입니다. – jvanderh

+0

나는이 문제가 CSS 대 자바가 아니라고 생각하지만, 당신은 단지 당신의 css를 당신의 conetne 폴더 안에두고 당신의 스크립트를 가지고 있지 않다고 생각한다. – Lewis

7

이 같은 수행하는 도우미 메서드 만들 수 있습니다

<%= Helper.IncludeJavascriptFile("Menu.js") %> 

을 한 후 그 도우미에 당신이 뭔가를 할 like :

public string IncludeJavascriptFile(string fileName){ 
    return Url.Content("<root>/Javascript/Files/" + fileName); 
} 

그러면 뷰에서 헬퍼 메서드를 호출 할 수 있습니다. 파일의 위치를 ​​변경하기로 결정한 경우, 파일을 한 위치에서만 볼 수 있으므로 걱정할 필요가 없습니다. 파일의 이름을 변경하면 그 자체가 다른 문제입니다.

+1

+1 mantainability. – jvanderh

관련 문제