Razor RenderSection в тегах script - Как вставить script из представления в функцию шаблона
Я использую MVC 3 с движком просмотра Razor, и я хотел бы добавить script из моих представлений в один $(документ).ready(function() {}); на главной странице.
Я пробовал:
<script type="text/javascript">
$(document).ready(function () {
//OnLoad Script load area
'@RenderSection("DocumentReady", false)'
});
</script>
В моем хозяине, а затем:
@section DocumentReady{
alert('');
}
На мой взгляд, но неудивительно это не работает: (
Есть ли простой способ добавить js-код к главной функции? Возможно, мне здесь не хватает чего-то очень простого. Я хочу сказать, что у меня есть много небольших элементов управления представлением, которые используют функцию $(document).ready(), и я не хочу, чтобы страница клиента была замусорена этими и их сопровождающими тегами script.
Спасибо.
Ответы
Ответ 1
Вам не нужны одиночные кавычки вокруг вызова RenderSection в вашем макете:
<script type="text/javascript">
$(document).ready(function () {
@RenderSection("DocumentReady", false)
});
</script>
и внутри представления:
@section DocumentReady {
alert('');
}
Но он, вероятно, будет более читабельным, если в вашем макете есть раздел сценариев:
@RenderSection("Scripts", false)
и внутри представления:
@section Scripts {
<script type="text/javascript">
$(function() {
alert('');
});
</script>
}
Ответ 2
Например, в вашем _layout.cshtml:
@RenderSection("JavaScript", required: false)
И затем, на ваш взгляд:
@section JavaScript
{
<script type="text/javascript" src="@Url.Content("/Scripts/SomeScript.js")"></script>
<script type="text/javascript" src="@Url.Content("/Scripts/AnotherScript.js")"></script>
<script type="text/javascript">console.log("in the js");</script>
}
Надеюсь, что поможет