J'utilise MVC 3 avec le moteur de vue Razor et je voudrais injecter le script de mes vues dans un $ (document) .ready (function () {}); dans la page maître.
J'ai essayé:
<script type="text/javascript">
$(document).ready(function () {
//OnLoad Script load area
'@RenderSection("DocumentReady", false)'
});
</script>
Dans mon maître, puis:
@section DocumentReady{
alert('');
}
À mon avis, mais sans surprise cela ne fonctionne pas :(
Existe-t-il un moyen simple d'ajouter du code js à une fonction maître? Il me manque peut-être quelque chose de vraiment simple ici. Mon point est que j'ai beaucoup de contrôle de petite vue qui utilise la fonction $ (document) .ready (() et je ne veux pas que la page client soit jonchée de ceux-ci et des balises de script qui les accompagnent.
Merci.
Vous n'avez pas besoin des guillemets simples autour de l'appel RenderSection dans votre mise en page:
<script type="text/javascript">
$(document).ready(function () {
@RenderSection("DocumentReady", false)
});
</script>
et à l'intérieur de la vue:
@section DocumentReady {
alert('');
}
Mais il sera probablement plus lisible si vous avez une section de scripts dans votre mise en page:
@RenderSection("Scripts", false)
et à l'intérieur de la vue:
@section Scripts {
<script type="text/javascript">
$(function() {
alert('');
});
</script>
}
Par exemple, dans votre _layout.cshtml:
@RenderSection("JavaScript", required: false)
Et puis à votre avis:
@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>
}
J'espère que ça t'as aidé