ASP.NET MVC 3 Razor: Incluir arquivo JavaScript na tag head

230

Estou tentando descobrir a sintaxe correta do Razor para obter um arquivo JavaScript para um determinado * .cshtml para estar na tag head junto com todos os outros arquivos de inclusão definidos em _Layout.cshtml.

Stephen Patten
fonte
7
Você também deve considerar colocar os js na parte inferior da página em vez de na seção principal.
Mattias Jakobsson
O único problema encontrado com o código de exemplo é que a seção "JavaScript" @ não precisa ser colocada entre aspas.
Stephen Patten
2
Mais uma coisa: se essa é uma tag JavaScript, tenha cuidado com o uso, eu precisava usar a tag END do elemento de script para fazer com que ela funcionasse corretamente. <script type = "text / javascript" src = "@ Url.Content (" ~ / Scripts / RDA.js ")"> </script>;
Stephen Patten
@Mattias Jakobsson - Nem sempre. Isso depende de um caso específico.
precisa saber é o seguinte
@Dimskiy se você me permite ser um analisador e pedante de palavras, você deve sempre considerar colocar os js na parte inferior, se você realmente o coloca lá ou não.
MrBoJangles 19/07/2013

Respostas:

398

Você pode usar seções nomeadas .

_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>
}
RPM1984
fonte
1
Sim, eu estava olhando o WebPageBase e imaginei que essa poderia ser a resposta, mas não sabia a sintaxe correta. Você recomendou um guia de referência para o MVC 3? Atenciosamente ..
Stephen Patten
8
Ha! Eu gostaria que houvesse um guia de referência para as sintaxes MVC 3 e Razor. Eu obtive o exposto acima no blog do Gu. A melhor referência para o MVC 3 é provavelmente as notas de versão.
RPM1984
Ah, e boa dica escreveu a tag close para a <script>tag - não sabia disso (ainda não tentei seções nomeadas com JS). Agora eu (e outros) vai saber
RPM1984
4
FYI: Javascript deve ser processado logo antes da </body>tag, e não na tag head. Isso é feito para que não impeça downloads paralelos pelo navegador. Consulte developer.yahoo.com/performance/rules.html
Peter
4
@ Peter - sim, eu sei - mas eu estava simplesmente abordando a resposta (JS na tag head).
RPM1984