将css文件移动到新的css文件夹后,无法从我的css中获取我的图片

时间:2013-02-09 13:16:00

标签: css asp.net-mvc

在更新我的CSS之前,我在Login.css中有以下内容:

body
{    
  background-image: url('./pictures/fond.png');    
  background-repeat: repeat-x;
}

这是我的结构:

enter image description here

现在我有以下css:

body
{    
  background-image: url('../pictures/fond.png');    
  background-repeat: repeat-x;
}

请注意网址中的双重点。

这是我的新结构:

enter image description here

我的问题:在我的IIS测试服务器上发布时,我看不到我的照片!?在本地开发机器(VS2012)上,我可以看到我的照片。

但是如果我更新位于我的IIS测试服务器中的Login.css并用一个点替换我的双点它再次起作用。这不是逻辑,因为(在我更新之后)Login.css现在位于css文件夹下。

有什么想法吗?

感谢。

更新----------------

这是我引用我的CSS的方式:

bundles.Add(new StyleBundle("~/Content/bundleLogin").Include(
            "~/Content/css/bootstrap.css",
            "~/Content/css/Login.css"));

我创建了一个包然后:

@Styles.Render("~/Content/bundleLogin")

1 个答案:

答案 0 :(得分:0)

我敢打赌你已经在视图中硬编码了你的CSS文件的路径,就像那样:

<link href="Content/css/Login.css" rel="stylesheet" type="text/css" />

而不是正确的方式,当然是使用网址助手:

<link href="@Url.Content("~/Content/css/Login.css")" rel="stylesheet" type="text/css" />

就您的CSS文件而言,您在那里引用的所有网址(例如图像)始终相对于CSS文件的当前位置。因此,如果您正确引用CSS文件,则不会有任何问题。使用url('../pictures/fond.png');是正确的相对位置。


更新:

哦,我看到了问题。您正在使用捆绑包。那么,bundle的问题在于你声明bundle名称的方式,你没有与物理结构相同级别的文件夹嵌套。所以修改你的包就像这样:

bundles.Add(new StyleBundle("~/Content/css/bundleLogin").Include(
        "~/Content/css/bootstrap.css",
        "~/Content/css/Login.css"));

然后:

@Styles.Render("~/Content/css/bundleLogin")