Razor ASP.NET MVC 3: dołącz plik JavaScript do tagu head


230

Próbuję znaleźć właściwą składnię Razor, aby uzyskać plik JavaScript dla określonego * .cshtml, który ma znajdować się w tagu head wraz ze wszystkimi innymi plikami dołączanymi, które są zdefiniowane w _Layout.cshtml.


7
Powinieneś także rozważyć umieszczenie js na dole strony zamiast w sekcji head.
Mattias Jakobsson

Jedyny problem, jaki znalazłem w przykładowym kodzie, to to, że @section „JavaScript” nie musi być ujęty w cudzysłów.
Stephen Patten

2
Jeszcze jedna rzecz: jeśli jest to tag JavaScript, uważaj na użycie, musiałem użyć tagu END elementu skryptu, aby działał poprawnie. <script type = "text / javascript" src = "@ Url.Content (" ~ / Scripts / RDA.js ")"> </script>;
Stephen Patten

@Mattias Jakobsson - Nie zawsze. To zależy od konkretnego przypadku.
Dimskiy,

@Dimskiy, jeśli pozwolisz mi być parserem słów i pedantem, powinieneś zawsze UWAŻAĆ umieszczenie js na dole, niezależnie od tego, czy faktycznie go tam umieścisz, czy nie.
MrBoJangles,

Odpowiedzi:


398

Możesz użyć Nazwanych Sekcji .

_Layout.cshtml

<head>
    <script type="text/javascript" src="@Url.Content("/Scripts/jquery-1.6.2.min.js")"></script>
    @RenderSection("JavaScript", required: false)
</head>

_SomeView.cshtml

@section JavaScript
{
   <script type="text/javascript" src="@Url.Content("/Scripts/SomeScript.js")"></script>
   <script type="text/javascript" src="@Url.Content("/Scripts/AnotherScript.js")"></script>
}

1
Tak, patrzyłem na WebPageBase i domyślałem się, że to może być odpowiedź, ale nie do końca znałem właściwą składnię. Czy możesz polecić przewodnik referencyjny dla MVC 3? Pozdrawiam ..
Stephen Patten

8
Ha! Żałuję, że nie było przewodnika po MVC 3 i składni Razor. Mam powyższe z bloga Gu. Najlepszym odniesieniem do MVC 3 są prawdopodobnie informacje o wersji.
RPM1984,

No i dobra wskazówka: zamknij tag dla <script>tagu - nie wiedziałem o tym (nie próbowałem jeszcze nazwanych sekcji z JS). teraz ja (i inni) będę wiedział
RPM1984,

4
FYI: Javascript powinien być renderowany tuż przed </body>tagiem zamiast w tagu head. Ma to na celu zapobieganie równoległemu pobieraniu przez przeglądarkę. Zobacz developer.yahoo.com/performance/rules.html
Peter,

4
@Peter - tak, wiem - ale po prostu odpowiadałem na odpowiedź (JS w nagłówku).
RPM1984,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.