<link href="Site.css" rel="stylesheet" type="text/css" />
这可以在我本地计算机上的Theme.Master(Views / Themes / Blue / Theme.Master)中正常工作,但不能从最终主页的托管提供商处理。如果css位于Content文件夹中的Content文件夹的任何子文件夹中,Theme.Master可以找到css,但如果css与Theme.Master位于同一文件夹中,则不能找到css。
我有道理吗?
非常沮丧
答案 0 :(得分:1)
您必须使用相对文件引用。试试这个:
<link href="<%= Url.Content("~/Content/Site.css") %>" rel="stylesheet" type="text/css" />
......这应该可以解决问题。
修改强> 既然你评论说这不起作用,我抬头看了解我找到解决方案的地方。我是在this博客文章中从Lance Fisher那里得到的。如果没有清除它(因为它是在讨论java脚本文件),你也可以看一下here之前回答的类似问题。希望有所帮助!
答案 1 :(得分:1)
您对Nick的回答的评论暗示您正在尝试将.css文件放在与〜/ Views /文件夹树下的Theme.Master文件相同的文件夹中。你不能这样做。 〜/ Views /树配置为阻止来自Web浏览器的所有HTTP请求。
您需要将.css文件放在可访问的位置。 〜/ Content /文件夹树是放置.css文件的传统位置。如果您将.css文件移动到那里,然后在Nick建议的情况下使用它,它将起作用:
<link href="<%= Url.Content("~/Content/Site.css") %>" rel="stylesheet" type="text/css" />
对于记录,由于web.config文件中的这些指令,它在Views文件夹中不起作用(注意,Views文件夹中直接有一个web.config文件)。这只是仅供参考。我并不建议你试着弄乱这些,因为他们在那里有充分的理由:
<!-- for IIS6 -->
<httpHandlers>
<add path="*" verb="*"
type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<!-- for IIS7 -->
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
</handlers>
答案 2 :(得分:0)
您是否尝试过使用root路径?如:
<link href="/Site.css" rel="stylesheet" type="text/css" />
或
<link href="/style/Site.css" rel="stylesheet" type="text/css" />
如果您的样式表不在您网站的根目录中。
答案 3 :(得分:0)
在托管服务提供商上,是网站根目录中的应用吗?还是在子文件夹中?在这方面,您的开发环境是否与服务器上的设置相匹配?您可能需要确保相对于应用程序根目录工作,〜/
从根本上说,这类似于相同的问题(使用脚本)discussed here。