ASP.NET MVC 3 Razor: включить файл JavaScript в тег заголовка

230

Я пытаюсь выяснить правильный синтаксис Razor, чтобы получить файл JavaScript для конкретного * .cshtml, который должен быть в теге head, вместе со всеми остальными включаемыми файлами, которые определены в _Layout.cshtml.

Стивен Паттен
источник
7
Вы должны также рассмотреть вопрос о размещении js внизу страницы, а не в разделе заголовка.
Маттиас Якобссон
Единственная проблема, которую я обнаружил с примером кода, заключается в том, что @section "JavaScript" не нужно заключать в кавычки.
Стивен Паттен
2
Еще одна вещь: если это тег JavaScript, будьте осторожны с использованием, мне нужно было использовать тег END элемента script, чтобы заставить его работать правильно. <script type = "text / javascript" src = "@ Url.Content (" ~ / Scripts / RDA.js ")"> </ script>;
Стивен Паттен
@Mattias Jakobsson - Не всегда. Это зависит от конкретного случая.
Димский
@Dimskiy, если вы позволите мне быть парсером и педантиком слов, вам действительно следует всегда РАССМОТРЕТЬ расположение js внизу, независимо от того, поместите ли вы его там или нет.
MrBoJangles

Ответы:

398

Вы можете использовать именованные разделы .

_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
источник
1
Да, я смотрел на WebPageBase и догадался, что это может быть ответом, но не совсем знал правильный синтаксис. Можете ли вы порекомендовать справочное руководство для MVC 3? С уважением ..
Стивен Паттен
8
Ха! Я ХОЧУ, чтобы было справочное руководство по синтаксису MVC 3 и Razor. Я получил вышеупомянутое из блога Гу. Лучшая ссылка на MVC 3 - это, вероятно, заметки о выпуске.
RPM1984
Да, и хороший совет относительно тега close для <script>тега - не знал этого (еще не пробовал именованные разделы с JS). теперь я (и другие) узнаю
RPM1984
4
К вашему сведению: Javascript должен отображаться прямо перед </body>тегом, а не в заголовке. Это сделано для того, чтобы браузер не предотвращал параллельные загрузки. См. Developer.yahoo.com/performance/rules.html
Питер
4
@ Питер - да, я знаю - но я просто обращался к ответу (JS в заголовке).
RPM1984