MVC4 部分视图 JavaScript 捆绑问题

MVC4 partial view javascript bundling Issue

本文关键字:问题 JavaScript 视图 MVC4      更新时间:2023-09-26

我正在使用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 用于加载 jquery 库的页面代码

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

有谁知道这个问题的解决方案,或者我只是以错误的方式去做?它毁了我的头!!

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

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

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

终于让它工作了。我从部分视图中删除了我的 javascript,并将其放置在脚本部分的父视图(不是部分视图)中。此脚本部分是在创建带有基架的视图 (Create) 时自动创建的,并放置在页面末尾。为了让它工作,我不得不将其移动到页面顶部 - 在调用渲染我的部分之前。

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

确保脚本引用位于"父"视图而不是部分视图上的开销并没有真正困扰我,但是如果您有大量部分都需要自己的脚本和 CSS,则客户端依赖项可能会有所帮助。