web-dev-qa-db-fra.com

Razor RenderSection dans les balises de script - Comment insérer le script de la vue dans la fonction de modèle

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.

36
Oliver

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>
}
78
Darin Dimitrov

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é

9
Ema.H