13

.skinasp.net和.cssin asp.net的主要区别是什么?

.skin是IDE的新增强。我一直在与.css. 可用的.skin不是.css

谢谢,萨吉

4

3 回答 3

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 或 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>
于 2010-10-27T14:28:23.680 回答
7

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

此外,ASP.NET Theme .skin 文件的默认行为是覆盖受影响控件的属性(这可能是意外行为)。例如,如果您为文件Width中的所有 ASP:Labels 设置属性.skin,则使用外观文件的所有 ASP:Labels 的Width属性都将设置为.skin文件的属性,而不管控件的单独Width设置如何。为了避免这种行为,可以使用 ASP.NET StyleSheetTheme 来允许控件级属性覆盖全局 .skin 属性。

于 2010-10-27T14:34:28.917 回答
1

即使在 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>

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

于 2014-05-07T07:48:14.227 回答