在css文件的末尾指定.aspx?

时间:2009-02-26 14:39:43

标签: asp.net

在ASP.NET中处理Web应用程序时,将文件指定为stylesheet.css.aspx而不仅仅是plain stylesheet.css的原因是什么?我已经在各种网络应用程序中看到了这一点。

网页设计师提到了一些关于如何使用.NET的东西以及为ASPX页面存储全局变量的内容,但我并不是真的理解,也不知道完整的故事。

这是在我的工作中为不同国家/地区的不同网站的大型网络应用程序完成的。这让我想知道,我什么时候会为不同的国家制作单独的网络应用程序而不是一个服务于不同语言的网络应用程序?这样做有性能,架构或其他技术原因吗?我可以想到几个非技术原因(例如SEO考虑因素)。

6 个答案:

答案 0 :(得分:14)

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

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

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

  1. 静态CSS文件也将传递给ASP.NET运行时,这将导致性能损失很小。
  2. 在许多共享托管环境中,您对IIS处理程序映射没有任何控制权。
  3. Web浏览器不关心(至少,他们不应该关心)关于URL的扩展或其他任何内容。他们唯一应该关心的是Content-Type标题。它应该设置为text/css;否则他们中的一些人可能会抱怨。

答案 1 :(得分:3)

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

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

只要您的样式表具有该名称即可。 我想不出任何使用.aspx扩展名命名样式表的原因,因为它会产生误导和混淆。 [其他帖子对于为何可以使用它有很好的解释。]

答案 2 :(得分: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 %>; }

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

一旦进入.Net,您就可以随时编写CSS。我更喜欢参数化的css.aspx,因为浏览器想要缓存CSS文件。

答案 5 :(得分:0)

Mehrdad's answer关于CSS文件的问题 - 这就是我们在许多网站上启用动态颜色的方式 - 使用查询字符串定义颜色,启用page caching varying by that query string,然后在那里去。

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

虽然SEO考虑因素会建议本地化内容通常来自本地服务器和域(例如.fr域上的法语内容),但这通常是不可能的。

在维护方面,维护一个网站而不是多个网站更容易 - 所以你要构建一次,利用框架功能来启用localisation(资源文件等),然后就可以了根据需要将其部署到一个位置或多个位置。