asp.net中.skin
和.css
之间的主要区别是什么?
.skin
是IDE的新增强功能。我一直在与.css
合作。 .skin
中没有.css
感谢, SAJ
答案 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>
这会将所有标签设置为蓝色。