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

时间:2011-05-07 19:26:02

标签: javascript asp.net-mvc-3 razor

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

我试过了:

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

在我的主人,然后:

@section DocumentReady{
   alert('');
}

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

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

感谢。

2 个答案:

答案 0 :(得分:77)

您的布局中不需要围绕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>
}

答案 1 :(得分:9)

例如,在_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>
    }

希望有所帮助