***模板页
1. 可以无限极嵌套。
2. 可以设置默认内容,不是 每个contentPlaceholder 都有对应的content 进行重写。
***模板页中的URL
服务器端控件的相对URL是相对于模板页的URL
HTML控件是相对内容内容页的URL。
对于以上解决方法:
1.服务器端控件和HTML控件互换。
2.使用绝对URL
3.在模板页中进行重新解析相对URL。
***Web配置文件中注册模板页
<System.web>
<pages masterPageFile="../sim.master"/>
<System.web>
***修改模板页内容
1. 在内容页中page指令中Titile属性。(模板页中head必须是服务器端控件)
在内容页中使用page.head进行编程设定。
Code
Style mystle = new Style();
mystle.BackColor = System.Drawing.Color.Red;
Page.Header.StyleSheet.CreateStyleRule(mystle, null, "html");
修改模板页的meta标签,用于搜索引擎。
// Create Meta Description
HtmlMeta metaDesc = new HtmlMeta();
metaDesc.Name = "DESCRIPTION";
metaDesc.Content = "A sample of using HtmlMeta controls";
// Create Meta Keywords
HtmlMeta metaKeywords = new HtmlMeta();
metaKeywords.Name = "KEYWORDS";
metaKeywords.Content = "HtmlMeta,Page.Header,ASP.NET";
// Add Meta controls to HtmlHead
HtmlHead head = (HtmlHead)Page.Header;
head.Controls.Add(metaDesc);
head.Controls.Add(metaKeywords);
***暴露模板页属性
1. 在模板页设置public属性。
2. 在内容页中使用master.<>进行访问。
3. 使用FindControl来修改模板页中的目标控件。
***动态加载模板页
Code
if (Request["master"] != null)
{
switch (Request["master"])
{
case "Dynamic1":
Profile.MasterPageFile = "Dynamic1.master";
break;
case "Dynamic2":
Profile.MasterPageFile = "Dynamic2.master";
break;
}
}
<profile>
<properties>
<add
name="MasterPageFile"
defaultValue="Dynamic1.master" />
</properties>
</profile>
***为多个内容页动态加载模板页
可以新建一个基类
Code
public class DynamicMasterpage: Page
{
protected override void OnPreInit(EventArgs e)
{
this.MasterPageFile = (string) Context.Profile["MasterPageFile"];
base.OnPreInit(e);
}
}
<profile>
<properties>
<add
name="MasterPageFile"
defaultValue="Dynamic1.master" />
</properties>
</profile>