来自asp.net的.skin vs .css

时间:2010-10-27 14:24:52

标签: asp.net theming

asp.net中.skin.css之间的主要区别是什么?

.skin是IDE的新增强功能。我一直在与.css合作。 .skin中没有.css

的内容

感谢, SAJ

3 个答案:

答案 0 :(得分:20)

在外观文件中,您可以设置asp.net控件的属性。

例如,

<asp:TextBox runat="server" Width="200"/>

应用程序中的所有TextBox控件的宽度都为200。

您可以为其命名,只有您喜欢的控件可以将它们设置为应用皮肤,例如,

<asp:TextBox SkinID="MultiLineTextBox" runat="server" TextMode="MultiLine" Height="240"/>

现在在添加TextBox控件的网页中,您可以将其SkinID设置为“MultiLineTextBox” 如下,

<asp:TextBox runat="server" SkinID="MultiLineTextBox"/>

因此它会将TextMode继承为MultiLine,将Height继承为240。

要使用皮肤,你必须在App_Themes文件夹下为你的应用程序添加一个主题,然后在那里添加皮肤文件,现在要在你的页面中使用这个主题,你必须将页面的EnableTheming属性设置为true,StylesheetTheme或主题到主题的名称。您也可以在配置文件中设置此属性。

在页面aspx中设置主题,

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" EnableTheming="true" StylesheetTheme="Your Theme Name" %>

在web.config中设置主题,

<configuration>
   <system.web>
     <pages styleSheetTheme="Your Theme Name"></pages>
   </system.web>
</configuration>

答案 1 :(得分:7)

请注意,就这两件事实际上而言,存在相当大的差异。 .skin文件中设置的任何属性都将复制到所有页面控件。使用层叠样式表的一个优点是信息被加载和缓存一次。 (并且可以应用于多个网页。)外观文件可能导致页面膨胀,因为每次呈现页面时,外观文件中设置的所有属性都必须与每个受影响的控件合并。

此外,ASP.NET Theme .skin文件的默认行为是覆盖受影响控件的属性(这可能是意外行为)。例如,如果为Width文件中的所有ASP:标签设置.skin属性,那么使用外观文件的所有ASP:标签的Width属性都将设置为无论控件的个人.skin设置如何,Width文件都是如此。为避免此行为,ASP.NET StyleSheetTheme可用于允许控件级属性覆盖全局.skin属性。

答案 2 :(得分:1)

即使在CSS中,您也可以设置一些属性,如Width。除了能够设置CSS无法设置的属性外,还有一些你需要的东西.skin文件。

考虑一个示例,您需要将页面上的所有asp:Label控件设置为蓝色。一个asp:Label实际上是一个跨越的文本,就在隐藏的div中。这就是为什么我们能够将一些像BackColor这样的属性设置为这个asp:Label以及为什么标准标签控件没有'BackColor'属性。

因此,如果您尝试通过CSS将字体颜色设置为所有ASP标签,

然后像

Label {
color: Blue; 
}

不行。另一方面,使用皮肤文件,您可以写

 <asp:Label runat="server" ForeColor="Blue"></asp:Label>

这会将所有标签设置为蓝色。