我在使用 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(尝试访问 js
和 css
文件时)。 404
发生的原因是:
- URL 不正确 - 尽管我使用了
~
(主页)字符不知何故被转换为相对于页面的路径。
这样的例子404
如 Firefox/Firebug 控制台中所示(确保“日志记录”已打开:
我使用 ResolveUrl
解决了这个问题.
例子:
<script src="<%= ResolveUrl("~/App_LocalResources/js/bootstrap.min.js") %>"></script>
解决第一个问题后,
404
s 坚持。我试图通过浏览器直接访问这些文件,我得到了一个
IIS 404.8
错误 - 表示服务器阻止访问App_LocalResources
文件夹。这是 IIS 服务器在某些预定义文件夹名称(包括App_LocalResources
、bin
、App_Data
等)上的默认行为。
所以,我移动了 css
和 js
文件到名为 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/