主题与旧学校样式表

时间:2011-04-20 12:26:28

标签: asp.net css app-themes

我一直在用ASP.NET开发网站很长一段时间。当我第一次学习主题和外表如何在ASP.NET中工作时,我发现它非常简单易用。

但是后来,我开始发现App_Themes的方法非常烦人,我们放入它的CSS根本不具备任何灵活性。我错过了什么吗?

  1. 使用以下主题自动将CSS文件添加到aspx页面:

    当我第一次开始网络开发时,我常常找到这个有用的回复。但是后来,当我越来越多地学习CSS时,我开始发现这真的令人不安。有时,有一些页面,添加某个CSS文件是没用的。

    最糟糕的是,它总是按字母顺序添加它们,因此您无法控制哪个文件是第一个。如果您已经完成某种“重置”CSS文件,这一点非常重要。因此,命名文件并不总是您想要的,因为您希望重置CSS文件按字母顺序排在顶部。

    我确实意识到这个解决方案可以将所有CSS代码放在一个文件中(实际上对于生产环境更好)。但这非常不灵活,会使您的CSS代码管理变得非常困难。

  2. 网址重写

    这是一个主要问题,因为添加到网站的CSS文件是真实aspx页面的相对路径,而不是重写后的URL。

    例如,如果从http://www.example.com/date/category/item.aspx重写此网址:http://www.example.com/items.aspx?id=item。该页面内的CSS文件链接如下所示:

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

    应该是:<link href="../../App_Themes/ThemeName/style.css" type="text/css" rel="stylesheet" />

    或者简单地说: <link href="http://www.example.com/App_Themes/ThemeName/style.css" type="text/css" rel="stylesheet" />

    因此破坏了网页设计,因为浏览器无法找到CSS文件。

  3. 这是我对主题的两个主要问题。因此我要问的是,放弃App_Themes方法是一个不好的举动,并切换回“旧学校”CSS设计(即制作一个普通文件夹,将我的CSS文件放入其中,并在我的手动中添加链接到那些CSS页)?我在这里缺少什么功能吗?

3 个答案:

答案 0 :(得分:2)

请参阅MSDN两种方法之间的差异 - 基本上,使用主题,您可以设置控件的任何属性,而不是仅控制样式。如果您仅将主题用于样式目的,那么您将不会失去任何CSS方式。我个人发现使用CSS提供了比使用内置主题更好的控制。

答案 1 :(得分:1)

我发现两种方法的混合效果最好。当您考虑使用Theme时,您应该只创建css文件,图像,皮肤文件来控制不同主题之间的网站外观(更改颜色或徽标等)。

为了确保网站结构正常,我总是有一个base.css,一个reset.css,以及主题目录之外的任何其他结构css文件,它们位于网站主要部分下面的自己的文件夹中( / includes / css /例如,和/ includes / js / for my javascript)。

通过这种方式,您可以确保网站在结构上保持一致,并且您始终可以将这些css文件包含在母版页中,然后应用它们来更改外观。

对于URL重写,我的链接引用始终以/开头,以确保服务器始终知道始终从服务器的根目录开始查找必要的文件。所以我的结构css文件的链接总是:

<link href="/includes/css/base.css" type="text/css" rel="stylesheet" />

HTH。

答案 2 :(得分:0)

我认为最好有一个单独的样式表,仅用于出版物和递归。 如果要重复某些样式,可以在需要时随时轻松访问它,而不是重复每个样式对象的代码。 如果要更改多个对象的样式,只需在样式表上更改它,它就会影响所有对象!

我希望这会有所帮助。