【发布时间】:2013-03-26 19:31:54
【问题描述】:
我正在使用通过 Buget 安装的 Twitter Bootstrap 到 ASP.NET MVC 应用程序。然而,我惊讶地发现,我所有过去在 localhost 上工作的引导 JavaScript,实际上在上传到我的网络托管服务提供商时仍然停止工作。
我完全被这个问题所困扰,我似乎无法弄清楚出了什么问题。
【问题讨论】:
标签: asp.net-mvc-4 twitter-bootstrap
我正在使用通过 Buget 安装的 Twitter Bootstrap 到 ASP.NET MVC 应用程序。然而,我惊讶地发现,我所有过去在 localhost 上工作的引导 JavaScript,实际上在上传到我的网络托管服务提供商时仍然停止工作。
我完全被这个问题所困扰,我似乎无法弄清楚出了什么问题。
【问题讨论】:
标签: asp.net-mvc-4 twitter-bootstrap
您的一些依赖于 jQuery 的脚本在 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> 中。这是您的偏好 - 请参阅此问题:Should Jquery code go in header or footer? 关于该特定问题...
您说它在您的本地机器上而不是在远程服务器上工作 - 如果确实如此,那么我最好的猜测是,这与捆绑/缩小的工作方式不同这一事实有关,具体取决于您是否处于调试或释放模式。
更新
基本上,在调试版本中,不会对您的脚本和 css 执行捆绑/缩小。您在捆绑包中引用的每个 <link> 和 <script> 都将作为单独的文件包含在内,不会对其应用任何转换。在发布版本中,捆绑包中的文件被连接到一个文件中,并对其应用缩小等转换。根据您的评论,为了在您的本地站点和已发布站点中获得调试行为,我看到了 3 个选项:
1.在您的发布版本中,在您的 web.config 中将编译调试标志设置为 true。
即
<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,并确保您的样式/脚本包含在正确的顺序中。
【讨论】:
在你的页面中有
<link href="/Content/bootstrapcss" rel="stylesheet"/>
...文件类型有问题,也许应该是
<link href="/Content/bootstrap.css" rel="stylesheet"/> ?
而且您的 Modernizr 文件存在路径问题,请检查路径是否正确且文件是否存在:
http://bipscore.com/Scripts/modernizr-1.7.min.js
可能还有其他问题,但首先纠正这两个问题并没有什么坏处。
祝你好运!
【讨论】: