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>