9

我正在使用 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)

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

4

3 回答 3

10

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

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

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

于 2012-06-29T07:50:36.287 回答
4

终于让这个工作了。我从部分视图中删除了我的 javascript,并将其放置在脚本部分的父视图(不是部分)中。此脚本部分是在使用脚手架(创建)创建视图时自动创建的,并放置在页。为了让它工作,我必须把它移到页面的顶部——在调用渲染我的部分之前。

于 2012-07-11T05:34:46.437 回答
2

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

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

于 2015-02-23T16:35:31.447 回答