1

我正在使用使用 Buget 安装的 Twitter Bootstrap 到 ASP.NET MVC 应用程序。然而,我惊讶地发现,我所有曾经在 localhost 上工作的引导 JavaScript,实际上在上传到我的网络托管服务提供商时仍然停止工作。

我对此完全感到困惑,我似乎无法弄清楚出了什么问题。

4

2 回答 2

9

一些依赖于 jQuery 的脚本在 jQuery 加载之前就被包含进来了。

  • bootstrap-dropdown.js 包含在 jQuery 之前
  • 您在第 75 行的自定义 javascript 包含在 jQuery 之前

我建议搬家

<script src="/Scripts/bootstrap.js" type="text/javascript"></script>
<script type="text/javascript" src="http://twitter.github.com/bootstrap/assets/js/bootstrap-dropdown.js"></script>

以及在包含 jQuery 包之后,从第 75 行到页面底部的自定义 javascript。或者将您的 jQuery 捆绑包移动到您的<head>. 这是您的偏好 - 请参阅这个问题:Jquery 代码应该放在页眉还是页脚?关于那个特定的问题......

您说它在您的本地机器上而不是在远程服务器上工作 - 如果确实如此,那么我最好的猜测是,这与捆绑/缩小的工作方式不同取决于您是处于调试还是发布模式的事实有关。


更新 基本上,在调试版本中,不会对您的脚本和 css 执行捆绑/缩小。您在捆绑包中引用的每个<link>and<script>都将包含在一个单独的文件中,不会对其应用任何转换。在发布版本中,捆绑包中的文件被连接到一个文件中,并对其应用缩小等转换。根据您的评论,为了在您的本地站点和已发布站点中获得调试行为,我看到了 3 个选项:

1. 在您的发布版本中,在您的 web.config 中将编译调试标志设置为 true。

IE

<system.web>
    <compilation debug="true" />
    <!-- Lines removed for clarity. -->
</system.web>

我不会特别推荐这个,因为您的发布版本通常不应该被标记为正在调试。但这是一个有用的设置,可以快速打开您的发布版本,以检查您的 javascript/css 在关闭时是否正常工作。

2. 在代码中,关闭捆绑表中的捆绑优化。

public static void RegisterBundles(BundleCollection bundles)
{
    // other code...
    BundleTable.EnableOptimizations = false;
}

3. 不要这样做。

行为上的差异是设计使然,并且是有道理的 - 在您的本地机器上进行开发,您可以看到所有单独的脚本/css 文件并且以未缩小的形式,这使得调试更加容易。发布后,这些文件将被压缩为一个压缩文件,这将减少您网站的加载时间。

我个人推荐选项 3,并确保您的样式/脚本包含在正确的顺序中。

于 2013-04-04T16:33:38.470 回答
1

在您的页面中,您有

 <link href="/Content/bootstrapcss" rel="stylesheet"/>  

...文件类型有问题,也许应该是

 <link href="/Content/bootstrap.css" rel="stylesheet"/> ? 

而且您的 Modernizr 文件存在路径问题,请检查路径是否正确且文件是否存在:

http://bipscore.com/Scripts/modernizr-1.7.min.js  

可能还有其他问题,但首先纠正这两个问题并没有什么坏处。

祝你好运!

于 2013-04-04T16:21:05.643 回答