为什么我的Theme.Master找不到它的Site.css?

时间:2009-04-16 20:08:32

标签: c# css model-view-controller master

<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。

我有道理吗?

非常沮丧

4 个答案:

答案 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