You receive a NullReference exception if you use the Page.Header property when the Master Page does not contain a server-side <head> tag.
File: Default.master
<%@ Master Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<style type="text/css">
html
{
background-color:silver;
font:14px Arial,Sans-Serif;
}
.content
{
margin:auto;
width:700px;
background-color:white;
border:Solid 1px black;
}
.leftColumn
{
float:left;
padding:5px;
width:200px;
border-right:Solid 1px black;
height:700px;
}
.rightColumn
{
float:left;
padding:5px;
}
.clear
{
clear:both;
}
</style>
<title>Simple Master</title>
</head>
<body>
<form id="form1" runat="server">
<div class="content">
<div class="leftColumn">
<asp:contentplaceholder
id="ContentPlaceHolder1"
runat="server"/>
</div>
<div class="rightColumn">
<asp:contentplaceholder
id="ContentPlaceHolder2"
runat="server"/>
</div>
<br class="clear" />
</div>
</form>
</body>
</html>
File: Default.aspx
<%@ Page Language="C#" MasterPageFile="~/Default.master" %>
<script runat="server">
void Page_Load()
{
HtmlMeta metaDesc = new HtmlMeta();
metaDesc.Name = "DESCRIPTION";
metaDesc.Content = "A sample of using HtmlMeta controls";
HtmlMeta metaKeywords = new HtmlMeta();
metaKeywords.Name = "KEYWORDS";
metaKeywords.Content = "HtmlMeta,Page.Header,ASP.NET";
HtmlHead head = (HtmlHead)Page.Header;
head.Controls.Add(metaDesc);
head.Controls.Add(metaKeywords);
}
</script>
<asp:Content
ID="Content1"
ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">
Content in the first column
<br />Content in the first column
<br />Content in the first column
<br />Content in the first column
<br />Content in the first column
</asp:Content>
<asp:Content
ID="Content2"
ContentPlaceHolderID="ContentPlaceHolder2"
Runat="Server">
Content in the second column
<br />Content in the second column
<br />Content in the second column
<br />Content in the second column
<br />Content in the second column
</asp:Content>