个人理解asp.net 主题主要适用于方便的控制服务器控件的样式。
1.怎么建立主题
我们先建立一个空的asp.net web 网站,然后新增一个App_Themes文件夹,会产生App_Themes文件夹和主题1子文件夹如图:
2.然后在主题1文件夹下面添加一个外观文件SkinFile.skin,它包含各个控件(例如,Button、Label、TextBox 或 Calendar 控件)的属性设置。例如,下面是 Button和textbox 控件的控件外观: <asp:Button runat="server" Text="Button" ForeColor="Red" />
<asp:TextBox runat="server" BackColor="Gray" ForeColor="White" CssClass="test"></asp:TextBox>,
我们注意到控件外观设置类似于控件标记本身,但是不存在ID="",只包含您要作为主题的一部分来设置的属性。
另外,在主题1中我们还能添加css样式文件来控制主题的控件样式,如上面的textbox中我们就用到了 CssClass="test"。
3.新建一个web 页面theme.aspx,在其中添加2个服务器控件:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
4.把主题关联到web页面。
如果仅限于把主题应用于当前的theme页面,我们可以再theme.aspx中添加<%@ Page Theme="主题1" %>;
如果要把主题应用的整个网站,那么可以再webconfig文件中的<system.web>节点下面如下配置:<pages theme="主题1"></pages>
至于优先级,肯定是页面级>网站级,就是说如果在webconfig中配置了一个主题A,另外又在页面的Page 里面加入了theme="B",那么页面应用的主题为B
5.主题中的SkinId
假如SkinFile.skin有如下设置:
<asp:Button runat="server" Text="Button" ForeColor="Red" />
<asp:Button runat="server" Text="Button" ForeColor="Blue" SkinID="sid" />
而且theme.aspx中有2个button
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:Button ID="Button2" runat="server" Text="Button" SkinID="sid" />
那么带有SkinID="sid"的button会呈现蓝色,就是说SkinFile.skin中带有SkinID="sid"的主题只能应用也同样有设置SkinID="sid"的控件