MVC4局部视图javascript捆绑问题

时间:2012-06-29 07:43:15

标签: javascript asp.net-mvc-4 asp.net-optimization bundling-and-minification

我正在使用visual studio 11开发一个ASP.net 4,MVC4(RC)项目。 我试图渲染一个呈现局部视图的MVC4 Razor视图。我的部分视图需要一些JavaScript。 在我的部分视图中,当我在脚本部分中包含我的javascript时,如下所示它似乎没有加载。

@section Scripts {
    <script type="text/javascript">
        $(function () {
            alert("test");
        });
    </script>
}

如果我删除脚本部分,它会失败,因为当文档就绪代码运行时,jquery库(在我的_Layout.cshtml页面上捆绑并呈现)尚未加载。

<script type="text/javascript">
    $(function () {
        alert("test");
    });
</script>

_Layout Page代码加载jquery库

@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)

有没有人知道这方面的解决方案,还是我只是以错误的方式去做?它破坏了我的头!!

3 个答案:

答案 0 :(得分:10)

不要将您的脚本包装在部分的document.ready中:

@section Scripts {
    <script type="text/javascript">
        alert("test");
    </script>
}

啊,不要将脚本放在partials中。 Javascript代码应放在单独的javascript文件中。如果你想在加载部分时执行一些javascript,你只需将这个脚本外部化为一个可重用的函数/插件,你可以在部分加载后调用它。

答案 1 :(得分:4)

终于有了这个工作。我从部分视图中删除了我的javascript并将其放在脚本部分的父视图(不是部分的)中。这个脚本部分是在创建带有脚手架(Create)的视图时自动创建的,并且放在了页。为了实现这一点,我必须将它移到页面顶部 - 在调用渲染我的部分之前。

答案 2 :(得分:2)

ClientDependency正好解决了这个问题,并允许您将部分视图的脚本引用添加到页面末尾(或指定的任何位置)的部分视图中。它还逐页处理捆绑,版本控制和缩小。

确保脚本引用的开销是在“父”视图而不是部分视图上并没有真正打扰我,但如果你有大量的部分需要他们自己的脚本和CSS,那么Client Dependency可能会有所帮助。