【问题标题】:MVC Bundling on views without layout pages没有布局页面的视图上的 MVC 捆绑
【发布时间】:2017-10-27 09:18:49
【问题描述】:

我正在尝试将 jquery 文件捆绑到没有如下布局的视图上

<html>
<head>
@section Scripts{
  <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jquery")">
  </script>
}
<script type="text/javascript">
$(document).ready(function () {

上面的包配置已经写好了,如下

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

每当我调用 document.ready 函数时,我都会看到 $ 未定义异常,这意味着脚本尚未加载。

当放置在同一共享文件夹下的 layout.cshtml 中时,相同的捆绑可以完美运行。我错过了什么吗?

【问题讨论】:

  • 我想您的脚本顺序是错误的,即您在加载之前尝试使用 jquery。为什么要在布局中加载 jquery?每次都预先加载它更有意义
  • @Liam 我在这个页面中只需要 jquery,我正在使用那个包。
  • 然后将您的脚本部分移至其他 javascript 导入的上方。要正确回答这个问题,我们需要看看你如何渲染 scripts 和你的其他 js 文件
  • 好的,展开代码。脚本在捆绑后开始。
  • 另外,如果我使用普通脚本标签而不是捆绑来添加对 jquery 脚本文件的引用,事情似乎工作得很好。

标签: asp.net-mvc bundling-and-minification


【解决方案1】:

这是问题所在:

@section Scripts{

如果您不使用布局页面,则此部分不会呈现(我很惊讶它不会引发错误)。部分仅用于布局页面。如果您想让页面正常工作,请去掉该部分,然后将 jquery bundle 脚本直接放在页面中。

您可能还想考虑:Why scripts at the end of body tag

【讨论】:

  • 是的,我做过的最愚蠢的复制粘贴问题。有时人们说写代码比复制粘贴好。
【解决方案2】:

这样使用:

@Scripts.Render("~/bundles/jquery")

【讨论】:

  • 这与 OP 已经在做的几乎相同。基本上这完全没有抓住重点
  • @Liam 你确定两者是一样的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
  • 1970-01-01
  • 2020-06-19
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多