【问题标题】:Changing the value with in CSS at runtime ( specifically .Net )在运行时在 CSS 中更改值(特别是 .Net)
【发布时间】:2014-02-22 10:30:28
【问题描述】:

假设我有一个引用另一个资产的 CSS,比如图像。 例如 abc.css 包含。 背景:url(/a/rfp/images/logo.png) 无重复;

现在我想在运行时更改 url 以指向其他域说:

背景:url(http://cdn1.domain.com/a/rfp/images/logo.png) 不重复; 这个 cdn1.domain.com 将来自一个变量。这也可以在运行时更改 说 背景:url(http://cdn2.domain2.com/a/rfp/images/logo.png) 不重复; 所以有意义的是使用变量绑定这个域。

我可以使用构建时间生成 css。 任何模板化解决方案?或者别的什么。 要记住的一点是:域名可以在运行时更改。因此,对于每个 HTTP 请求,都可以更改变量,从而更改域名。

【问题讨论】:

  • 为什么不把 CSS 也放在那里 - 在 HTML 中更改 CSS 的路径(很可能是用 ASPX/CSHTML 动态生成的)比动态创建 CSS 更容易......无论如何你在看什么为 CSS?只是基本的String.Replace 和通过 `return Content(changeString, "text/css") 为 MVC 提供的服务就可以了...
  • 听说过.less??
  • 取决于你在做什么..这可能会有所帮助..hanselman.com/blog/… - 在 .net 中使用 scriptmananger 切换本地或 cdn。
  • 大家都给出了很好的答案。但问题是另一回事。让我再解释一下。 css 文件名是:abc.css,其中包含对图像cdn1.domain.com/a/rfp/images/logo.png 的引用,其中cdn1.domain.com 的值必须来自变量。所以我不能把整个css保存到任何cdn,因为浏览器直接拉取它。并且它将仅具有硬编码的 cdn1.domain.com 域。我无法为每个 http 请求更改它。现在,如果我必须从服务器提供 css,我认为 .less 是一种方式。

标签: c# css .net http assets


【解决方案1】:

好的,我不确定是否需要这样做,因此解决方案可能并不完美......但是......

对于有问题的css文件..将其更改为aspx页面并将<% Response.ContentType = "text/css" %>添加到文件顶部。然后,您可以使用 URL 参数来更改文件中的值。这些 url 参数可以根据您的应用程序的需要进行更改,方法是修改母版页中文件的 url。

这意味着您不能捆绑有问题的 css 文件,但是无论如何都很难捆绑在运行时更改的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多