2009-06-04 8 views
6

Utworzono domyślny projekt ASP.net MVC. Na stronie wzorcowej mam następujący w górnymJak dołączyć pliki js do asp.net MVC i mieć poprawną ścieżkę na wszystkich trasach

<head runat="server"> 
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
</head> 

I wtedy trzeba dodać plik JavaScript i dodaje linię następująco przeciągając plik z Solution Explorer do strony:

<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> 

Kiedy uzyskać dostęp do witryny i spojrzeć na HTML w przeglądarce widzę tak:

<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> 

plik CSS względna ścieżka została ustalona, ​​ale plik JS nie. Witryna zostanie wdrożona w innym folderze na serwerze niż katalog główny, który dostaję w moim polu rozwoju.

Czy jest to właściwy sposób?

Odpowiedz

16

użyć adresu URL Helper:

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

nadzieję, że pomoże

+0

Rozwiązuje to problem z instalacją witryny w podkatalogu, ponieważ ~ jest zastąpione ścieżką do katalogu głównego witryny. Ale problem, że po dojściu do katalogu głównego plik js znajduje się w folderze Skrypty w katalogu głównym, a nie w ../../ Pozostaje skrypt. Ponieważ MVC będzie kierował do różnych podfolderów, skrypt nie będzie zawsze dostępny ze wszystkich tras. Dałem ci +1, ponieważ przynajmniej teraz mam sposób na kodowanie ścieżek względem katalogu głównego. Ale poczekam, aby sprawdzić, czy ktoś może wyjaśnić, dlaczego działa dla CSS po wyjęciu z pudełka, a nie dla JS. – jvanderh

+0

Myślę, że problem nie jest css vs JavaScript, ale po prostu masz swoje css wewnątrz swojego folderu conetne, a nie twój skrypt – Lewis

7

Można utworzyć metody pomocnika, który robi coś takiego:

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

a następnie w tym pomocnika coś zrobić na przykład:

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

Następnie możesz wywołać tę metodę pomocnika z widoku. Jeśli zdecydujesz się zmienić lokalizację plików, to tylko w jednym miejscu musisz się tym martwić. Jeśli zmienisz nazwę plików, to jest to inny problem sam w sobie.

+1

+1 dla zdatności. – jvanderh

Powiązane problemy