2009-02-26 337 views
8

在ASP.NET中的Web应用程序中工作时,将文件指定为stylesheet.css.aspx而不是简单的stylesheet.css的原因是什么?我已经看到这在各种网络应用程序中完成。在css文件的末尾指定.aspx?

网页设计师提到了一些关于.NET是如何存储ASPX页面的全局变量,但我并没有真正理解,也不知道完整的故事。

这是在我的工作中为不同国家的不同网站的大型网络应用程序完成的。这让我想知道,我何时为单独的国家制作单独的网络应用程序,而不是一个Web应用程序服务于不同的语言?有这样的表现,建筑或其他技术理由吗?我可以考虑一些非技术原因(如SEO考虑因素)。

+0

奇怪......我也想知道,我从来没有遇到过这样的技术。也许他们动态生成样式表内容? – 2009-02-26 14:44:53

+0

我从来没有遇到这样的扩展修改的CSS文件。这个问题的答案应该是明智的。 – Cerebrus 2009-02-26 14:47:11

+0

你必须记住最后的一切。与文件扩展名完全无关。很明显,创建者试图指出这是CSS,但实际上这首先是一个aspx文件。 – annakata 2009-02-26 22:13:32

回答

14

样式表可能不是静态的,而是在服务器上动态生成的。

此技术可用于通过考虑几个参数(如用户主题选择或其他)来提供不同的样式表。

澄清:虽然您可以将IIS中的.css扩展名映射为由ASP.NET处理。它有两个问题:

  1. 静态CSS文件也将流传到ASP.NET运行时,这会导致性能损失很小。
  2. 在许多共享主机环境中,您没有对IIS处理程序映射的任何控制。

网页浏览器并不在意(至少它们不应该关心)关于URL的扩展名或其他内容。他们唯一应该关心的是Content-Type标题。它应该设置为text/css;否则有些人可能会抱怨。

+0

是的,但您可以告诉IIS使用aspnet_isapi.dll处理.css文件。无需更改扩展名。 – darasd 2009-02-26 14:51:39

3

样式表只是一个文本文件 - 只要您的<link>匹配,您就可以指定所需的任何文件扩展名。换句话说,这将工作:

<link type="text/css" rel="stylesheet" href="style.foobar"/> 

只要你的样式表有这个名称。 我想不出任何使用.aspx扩展名命名样式表的原因,因为这是误导性和混淆的。 [其他文章有很好的解释为什么这可能会被使用。]

0

样式表通常是静态文本文件,没有理由给一个.aspx扩展名,除非它们是动态生成的。

0

如果您命名样式表.aspx,它将由ASP.Net引擎处理,而不是简单地作为文本文件。

一旦你在.Net中,你可以自由地编写你的CSS。尽管我喜欢参数化的css.aspx,因为浏览器想要缓存CSS文件。

1

如前所述,它允许服务器将其作为aspx文件处理。它会吐出css我敢肯定,但将允许你做处理服务器端。

在你给出的例子中,如果你对不同地区(可能翻译过,但结构相同)有相同的HTML内容,那么通过一个动态的css文件,你可以换出背景图像。通常这被认为是一个坏主意,因为你应该为html元素添加不同的类名来解决这个问题。

这样做的另一个常见原因是为了避免重复的颜色定义。从技术上讲,你也可以通过使用类名避免这种情况,但它变得相当烦人。大多数人都希望有类似:

define sitebordercolor #999; define sitebackgroundcolor #fff;

,然后在自己的CSS,能够做到:

.foo { border: 1px solid #sitebordercolor; background-color: #sitebackgroundcolor; }

然而,CSS没有按”让你这样做。因此,通过使用ASPX文件,就可以达到同样的效果:

.foo { border: 1px solid <%=sitebordercolor %>; background-color: <%=sitebackgroundcolor %>; }

0

Mehrdad's answer与问候的CSS文件恰如其分 - 这就是我们如何在我们的一些站点实现动态颜色 - 通过查询字符串定义颜色,启用page caching varying by that query string,然后您就可以开始了。

在回答这个问题的架构部分:

虽然SEO方面的考虑会建议本地化的内容往往是从本地服务器和域(即在例如.FR域名法语内容)这往往ISN服务不可能。

在维护方面,维护一个网站比使用多个网站更容易 - 所以您只需构建一次,利用框架功能来启用localisation(资源文件等),然后您可以部署到你认为合适的一个或多个位置。