脚本标记内的Razor RenderSection - 如何将脚本从视图插入到模板函数中

Oli*_*ver 38 javascript razor asp.net-mvc-3

我正在使用带有Razor视图引擎的MVC 3,我想将我的视图中的脚本注入一个$(document).ready(function(){}); 功能在母版页中.

我试过了:

    <script type="text/javascript">
    $(document).ready(function () {
        //OnLoad Script load area
        '@RenderSection("DocumentReady", false)'
    });
</script>
Run Code Online (Sandbox Code Playgroud)

在我的主人,然后:

@section DocumentReady{
   alert('');
}
Run Code Online (Sandbox Code Playgroud)

在我看来,但毫无疑问这不起作用:(

有没有一种简单的方法将js代码添加到主函数?我可能会遗漏一些非常简单的东西.我的观点是我有很多使用$(document).ready(()函数的小视图控件,我不希望客户端页面被这些及其附带的脚本标记所占据.

谢谢.

Dar*_*rov 81

您在布局中不需要围绕RenderSection调用的单引号:

<script type="text/javascript">
    $(document).ready(function () {
        @RenderSection("DocumentReady", false)
    });
</script>
Run Code Online (Sandbox Code Playgroud)

并在视图内:

@section DocumentReady {
    alert('');
}
Run Code Online (Sandbox Code Playgroud)

但如果您的布局中有一个脚本部分,它可能会更具可读性:

@RenderSection("Scripts", false)
Run Code Online (Sandbox Code Playgroud)

并在视图内:

@section Scripts {
    <script type="text/javascript">   
        $(function() {
            alert('');
        });
    </script>
}
Run Code Online (Sandbox Code Playgroud)


Ema*_*a.H 10

例如,在_layout.cshtml中:

@RenderSection("JavaScript", required: false)
Run Code Online (Sandbox Code Playgroud)

然后在你看来:

    @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>
    }
Run Code Online (Sandbox Code Playgroud)

希望有所帮助