【问题标题】:MVC4 partial view javascript bundling IssueMVC4部分视图javascript捆绑问题
【发布时间】:2012-06-30 18:11:42
【问题描述】:

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

有谁知道这个问题的解决方案,还是我只是走错了路?它破坏了我的头!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 感谢您的回复,但它对我不起作用。即使在我查看页面源代码时删除了 document.ready,javascript 也完全丢失了。如果我将 javascript 移动到其父视图(不是部分视图),它会被加载。但我确实需要它来加载部分视图。
      • 终于让它工作了。当我使用脚本创建页面时
      • 很有趣,你发现了@martin 的问题,即使你的解决方案是正确的,他也标记了自己的答案。 :D
      • 如果我有部分特定的脚本怎么办?
      • 在我的情况下,我需要对它的父母完全不可知的部分,反之亦然。我发现了一些hacky解决方法,我将使用它们。无论如何,感谢您的 cmets。
      猜你喜欢
      • 2023-03-03
      • 2012-10-11
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 2013-04-02
      • 2012-07-22
      • 1970-01-01
      • 2017-08-04
      相关资源
      最近更新 更多