代码之家  ›  专栏  ›  技术社区  ›  Guy

CSS文件仅在通过ASP.NET MVC Controller+操作获取时加载到IE中

  •  2
  • Guy  · 技术社区  · 16 年前

    我通过一个ASP.NET MVC的Controller+操作提供一个站点的CSS内容。CSS“文件”似乎可以正确传送,但只有IE会应用它。其他浏览器(firefox、opera、chrome)会忽略CSS文件,并在不使用样式的情况下呈现页面。IE8工作得很好。

    这是我用来通过控制器和操作返回CSS的基本代码:

    public void CSS(string version)
    {
      string cssFile = Server.MapPath("/site.css");
      string cssContents = System.IO.File.ReadAllText(cssFile);
      Response.Write(cssContents);
    }
    

    请注意,版本可以是任何字符串。我尝试过使用字符串,如“myversion.css”、“1.css”、“1234”、“任意”等。

    所有这些都在IE8中工作,但不在任何其他浏览器中工作。有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Pekka    16 年前

    你得把合适的 Content-type: text/css 标题。

    否则,火狐将忽略样式表,并在其错误控制台中输出警告。其他基于gecko/webkit的浏览器也可能是这样。

        2
  •  2
  •   Guy    16 年前

    这是其中一种情况,在打字出问题并思考如何表达它,然后把它贴出来之后,我才明白答案。当我回到这里时,佩卡答对了这个问题。如果有人感兴趣,这里有一些代码可以解决问题:

    string fileLocation = Request.PhysicalApplicationPath + @"site.css";
    ContentResult fcr = new ContentResult();
    fcr.Content = System.IO.File.ReadAllText(fileLocation);
    fcr.ContentType = "text/css";
    return fcr;