.skin
asp.net和.css
in asp.net的主要区别是什么?
.skin
是IDE的新增强。我一直在与.css
. 可用的.skin
不是.css
谢谢,萨吉
在皮肤文件中,您可以设置 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 或 Theme 设置为您的主题的名称。您还可以在配置文件中设置此属性。
在页面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>
请注意,就这两件事的实际作用而言,存在相当大的差异。.skin 文件中设置的任何属性都会复制到所有页面控件。使用级联样式表的一个优点是信息被加载和缓存一次。(并且可以应用于多个网页。)皮肤文件可能会导致页面膨胀,因为每次呈现页面时,皮肤文件中设置的所有属性都必须与每个受影响的控件合并。
此外,ASP.NET Theme .skin 文件的默认行为是覆盖受影响控件的属性(这可能是意外行为)。例如,如果您为文件Width
中的所有 ASP:Labels 设置属性.skin
,则使用外观文件的所有 ASP:Labels 的Width
属性都将设置为.skin
文件的属性,而不管控件的单独Width
设置如何。为了避免这种行为,可以使用 ASP.NET StyleSheetTheme 来允许控件级属性覆盖全局 .skin 属性。
即使在 CSS 中,您也可以设置一些属性,例如 Width。除了能够设置 CSS 无法设置的属性之外,您还需要 .skin 文件来完成一些事情。
考虑一个示例,您需要页面上的所有 asp:Label 控件为蓝色。asp:Label 实际上是跨度内的文本,即隐藏 div 内的文本。这就是为什么我们能够为这个 asp:Label 设置一些属性,如 BackColor,以及为什么标准标签控件没有“BackColor”属性。
因此,如果您尝试通过 CSS 为所有 ASP 标签设置字体颜色,
然后像
Label {
color: Blue;
}
不管用。另一方面,使用皮肤文件,您可以编写
<asp:Label runat="server" ForeColor="Blue"></asp:Label>
这会将所有标签设置为蓝色。