2009-09-07 63 views
2

我目前正在开发将具有多个皮肤的ASP.NET WebForms应用程序。我想要解决这个问题的方法是将每个皮肤放在一个完全独立的文件夹中,该文件夹将包含所有图像和CSS,并且CSS将相应地引用图像。创建具有多个皮肤的ASP.NET Web应用程序?

的文件夹结构是这样的:

  • /Default.aspx
  • /Skins/Master.css
  • /Skins1/Skin1/Skin1.css
  • /Skins1/Skin1 /图片/ ...
  • /Skins1/Skin1/Skin2.css
  • /Skins1/Skin2 /图片/ ...
  • /滑雪NS1/Skin1/Skin3.css
  • /Skins1/Skin3 /图片/ ...

所以,举例来说,我们可能有:

<div id="foo-logo"></div> 
<a href="/bar/"><div id="bar-logo"></div></a> 

然后在CSS:

#top-logo { height: 100px; width:200px; background:url(images/foo-logo.jpg); } 
#bar-logo { height: 50px; width:100px; background:url(images/bar-logo.jpg); } 

我这背后的逻辑是避免具有与所述代码为串联皮肤夹引用,像这样:

<img src="/skins/<%=Settings.CurrentSkin%>/images/foo-logo.jpg" /> 
<a href="/bar/"><img src="/skins/<%=Settings.CurrentSkin%>/images/bar-logo.jpg" /></a> 

这样,HTML将保持干净并且完全独立,并且可以通过简单引用不同的CSS文件来完全更改皮肤,并且无需更新图像标记。

的这一点,我能想到的主要缺点是:

  • 包含元素对图像尺寸将需要,因为它们会作为CSS背景图像
  • 网络被实现为在CSS被明确指定应用程序可能不会降级,如果重要品牌元素(例如徽标只能用CSS可见)

使用此方法时我还应该注意什么和/或是否有更好的方法实现此目的?

+0

如何选择合适的皮肤?它是用户特定的设置,还是根据其他条件自动选择的设置? –

+0

Web应用程序将具有多个URL,并将根据用于访问它的URL来选择外观。 – Mun

回答

1

的WebForms有对主题的支持和剥皮它做了很多的你似乎什么想在这里做,一些有用的文章

Ode to CodeMSDN

什么剥皮基本上可以让你做的是确定单独的样式表和控制皮肤。你的文件夹结构会像

App_Themes文件/ Skin1

App_Themes文件/ Skin2

App_Themes文件/ Skin3

...

然后,您可以使用asp:Image控件指向每个皮肤ID的不同图像URL(或者您可以通过CSS执行此操作)。

相关问题