javascript - ASP.NET 无法加载 CSS 和 Javascript 文件

标签 javascript jquery css asp.net twitter-bootstrap

我在使用 ASP.NET 时遇到了一个非常特殊的问题。 我有一个小网站。我编写了一个简单的 MasterPage,用于大多数网站页面。

我想包含 Bootstrap 和 jQuery 的 CSS 和 Javascript 文件。当我在我的母版页中使用指向远程位置的 URI 进行链接时(见下文),一切正常:

<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="Stylesheets" runat="server">
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"/>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    </asp:ContentPlaceHolder>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>

由于一些原因,我希望这些 JS 和 CSS 文件在本地可用,所以我将相关文件下载到服务器。但是当我尝试将这些本地文件包含在母版页中时,它们无法加载。

我试过:

  • 使用绝对路径(即 ~/res/css/... )
  • 使用 <%= ResolveUrl("...") %>
  • 使用 <ScriptManager> - 相同的效果
  • 尝试以相同方式将这些文件包含在 head 中时contentPlaceHolder在内容页面中,效果是一样的。

非工作代码示例:

<asp:ContentPlaceHolder ID="Stylesheets" runat="server">
    <link rel="stylesheet" href="~/App_LocalResources/css/bootstrap.min.css"/>
    <script src="~/App_LocalResources/js/jquery.min.js"></script>
    <script src="~/App_LocalResources/js/bootstrap.min.js"></script>
</asp:ContentPlaceHolder>

无论我使用 ContentPlaceHolder 结果都是一样的还是不是。

如果你能帮助我解决这个问题,我会非常棒 - 提前致谢。

最佳答案

在阅读了一些非常有用的评论后,我能够快速检测并解决此问题失败的原因 - 感谢发布这些评论的用户。

问题是由 404 引起的s(尝试访问 jscss 文件时)。 404发生的原因是:

  • URL 不正确 - 尽管我使用了 ~ (主页)字符不知何故被转换为相对于页面的路径。

这样的例子404如 Firefox/Firebug 控制台中所示(确保“日志记录”已打开: 404 in Firefox Consol

我使用 ResolveUrl 解决了这个问题. 例子: <script src="<%= ResolveUrl("~/App_LocalResources/js/bootstrap.min.js") %>"></script>

  • 解决第一个问题后,404 s 坚持。

    我试图通过浏览器直接访问这些文件,我得到了一个 IIS 404.8错误 - 表示服务器阻止访问 App_LocalResources文件夹。这是 IIS 服务器在某些预定义文件夹名称(包括 App_LocalResourcesbinApp_Data 等)上的默认行为。

IIS Server 404.8 Error Page

所以,我移动了 cssjs文件到名为 res 的文件夹中成功了。

最终<head>母版页中的部分如下所示:

<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="Stylesheets" runat="server">
        <link rel="stylesheet" href="<%= ResolveUrl("~/res/css/bootstrap.min.css") %>" />
        <script src="<%= ResolveUrl("~/res/js/jquery.min.js") %>"></script>
        <script src="<%= ResolveUrl("~/res/js/bootstrap.min.js") %>"></script>
    </asp:ContentPlaceHolder>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder> 
</head>

关于javascript - ASP.NET 无法加载 CSS 和 Javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30467796/

相关文章:

jquery - 引用链中当前的 jQuery 对象?

css - 背景过滤器与过滤器

javascript - 'Function' 上的 MDN 描述感到困惑,Function.length 是 Function 或 Function.prototype 的属性

javascript - Google 地方信息自动完成

jquery - 每秒改变CSS颜色

c# - 从 Javascript 隐藏代码访问数据

javascript - 在 Svelte 中使用 Await 进行转换

javascript - 离开页面几分钟后 jQuery 多个幻灯片效果错误

javascript - Angular JS : ng-switch on boolean not working

javascript - 选择不同数据库的设计模式