MasterPage/Theme/Skin

在整个网站中应用母版页
<configuration>
  <system.web>
    <pages masterPageFile="~/site.master"/>
  </system.web>
</configuration>

操作母版页中的控件
弱类型(不推荐):
<asp:Label ID="Title" RunAt="server"/>
...
((Label)Master.FindControl("Title")).Text = "Orders";
强类型
<asp:Labe ID="Title" RunAt="server"/>
public string TitleText
{
 get { return Title.Text; }
 set { Title.Text = Value; }
}
...
Master.TitleText = "Orders";

母版页嵌套
 嵌套的母版页只能包含有Content控件,但Content控件本身可以再嵌套ContentPlaceHolders控件。
 <!-- Orders.Master -->
 <%@ Master MasterPageFile="~/Site.Master" %>
 <asp:Content ContentPlaceHolder ID="..." RunAt="server">
  <asp:ContentPlaceHolder ID="..." RunAt="server">
   ...
  </asp:ContentPlaceHolder>
 <asp:Content>

没有定义SkinID的皮肤为默认皮肤

可以为特殊的页面或者控件设定EnableTheming属性,设置为false可以禁止主题功能。
<asp:DropDownList ID="dpType" EnableTheming="fasle" RunAt="server"/>

一旦<@ Page..中使用了Theme=“XX”,页面中对控件进行的属性设置会失败。如果希望页面中属性设置生效,需要在定义Theme的时候使用SytleSheetTheme来代替Theme

使用代码为页面指定Theme。Page_PreInit()事件中设置Page.Theme。

为复杂的控件定义皮肤模板,如:
<asp:Login..>
 <LayoutTemplate>
  some message here
  <table border="1"...>
   <tr><td>
    <asp:Label ...>
    <asp:TextBox ...>
    <asp:RequireFieldValidator ...>
   <tr>..
  </table>
 <br/>
 <asp:Literal ...>
 </LayoutTemplate>
</asp:Login>

posted @ 2009-08-05 13:37  DaCHun  阅读(226)  评论(0编辑  收藏  举报