28

我一直在阅读我的 ASP.NET 书中的主题,并认为这可能是一个非常方便的解决方案,然后我遇到了一些问题。

  • 主题选取文件夹中的每个 CSS 文件
  • 如果您想使用重置样式(排序很重要),则不保证导入样式表的顺序
  • 您的母版页不会明确指出正在使用什么样式,只有呈现的页面可以告诉您,除非您深入研究 web.config
  • 使用主题文件设置 Web 控件样式是……嗯……愚蠢?您可以在样式表中简单地执行此操作。粒度控制应该在 HTML 级别,不是吗?
  • 如何在一个样式表中没有所有样式的情况下指定打印样式表?

我想知道它们是否真的值得使用。有什么好处吗?有没有使用它们的主要网站?

编辑

只是为了澄清 slolife 的最后一点。如果我有两个样式表,一个叫做 print.css,一个叫做 main.css,并且我使用 ASP.NET 主题,它怎么知道 print.css 是一个打印样式表?在常规 HTML 中,您在标签本身(即<link rel= ...>)中使用媒体类型,但主题不会知道这一点,因此它只会作为常规样式表包含在内。

4

3 回答 3

9

我喜欢使用主题,但正如 Raj 在他的回答中指出的那样,URL 重写可能会导致问题。我寻找一些解决方案是我提出你的问题的原因。但无论如何我都会添加我的意见。

我将从上面讨论您的一些要点,说明为什么我认为主题很好:

- 主题选取文件夹中的每一个 CSS 文件

我猜您希望仅将某些样式表文件应用于某些页面。是的,主题在这里采用霰弹枪方法,所以这是一个问题。但是您不必将所有样式表都放在主题文件夹中。把你的专业的放在外面,它们不会自动被包括在内。但我认为自动包含通用/站点范围的功能是一个不错的功能。

- 如果您想使用重置样式(排序很重要),则不保证导入样式表的顺序

我认为您可以通过命名文件的方式来保证顺序,因此它们是按数字和字母顺序排列的。也许不是一个优雅的解决方案,但并不可怕。

就个人而言,我有一个构建步骤,它将我的主题文件夹中的所有 *.css 文件组合并压缩到一个单独的 style.css 文件中,并且由于我控制了该构建步骤和文件组合的顺序,所以这不会影响我。

- 您的母版页不会明确指出正在使用的样式,只有呈现的页面可以告诉您,除非您深入了解您的 web.config

您可以通过代码和 <%@Page 指令更改主题

- 使用主题文件设置 Web 控件样式是……嗯……愚蠢?您可以在样式表中简单地执行此操作。粒度控制应该在 HTML 级别,不是吗?

我同意通过主题将样式属性应用于控件似乎不是最佳实践。但我喜欢这样一个事实,即我可以在主题的皮肤文件中定义图像皮肤,而不必剪切和粘贴我在整个站点中使用很多地方的常见图像的 Width、Height、AlternativeText、Align 属性。如果我改变了其中一张图像,我可以在一个地方修复属性,而不是全部修复。我还可以创建应用了特定 css 类列表的蒙皮控件,这对我来说似乎很方便。

- 如何指定打印样式表而不在单个样式表中包含所有样式?

我有一个以@media print 开头的 Print.css 文件,它为我的网站定义了打印样式。为什么需要将它们放在一个样式表中?

于 2009-06-19T17:25:22.270 回答
6

IMHO, asp.net themes are absolutely USELESS

try implementing url rewriting with an app which uses themes and see them break straight away

basically, you can achieve the same thing writing few lines of code in asp.net and multiple css folders. i am yet to come across any developer / company who has been using themes

when asp.net 2.0 was launched, there was a big hype around themes but my personal opinion is its simply not worth it :-)

于 2009-03-27T14:56:49.937 回答
0

仅使用主题更改控件属性。它们不适合使用 css。

于 2010-09-03T02:31:55.227 回答