创建母版本页
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="SimpleMaster.master.cs"
Inherits="SimpleMaster" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head 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>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div class="content">
<div class="leftColumn">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
<div class="rightColumn">
<asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
</asp:ContentPlaceHolder>
</div>
<br class="clear" />
</div>
</form>
</body>
</html>
----------------------------------------
<%@ Page Title="" Language="C#" MasterPageFile="~/SimpleMaster.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
SimpleContent
</asp:Content>
<asp:Content ID="Content2" 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="Content3" 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>
嵌套母版本
[code]
<%@ Master Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<style type="text/css">
html
{
background-color: DarkGreen;
font: 14px Georgia,Serif;
}
.content
{
width: 700px;
margin: auto;
border-style: solid;
background-color: White;
padding: 10px;
}
.tabstrip
{
padding: 3px;
border-top: solid 1px black;
border-bottom: solid 1px black;
}
.tabstrip a
{
font: 14px Arial;
color: DarkGreen;
text-decoration: none;
}
.column
{
float: left;
padding: 10px;
border-right: solid 1px black;
}
.rightColumn
{
float: left;
padding: 10px;
}
.clear
{
clear: both;
}
</style>
<title>My Site Master</title>
</head>
<body>
<form id="form1" runat="server">
<div class="content">
<asp:Image ID="imgLogo" ImageUrl="~/Images/1.gif" AlternateText="Website Logo" runat="server" />
<div class="tabstrip">
<asp:HyperLink ID="lnkProducts" Text="Products" NavigateUrl="~/Products.aspx" runat="server" />
<asp:HyperLink ID="lnkServices" Text="Services" NavigateUrl="~/Services.aspx" runat="server" />
</div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
<br class="clear" />
Copyright ©2010 by Danny.
</div>
</form>
</body>
</html>
[/code]
SectionProducts.master
[code]
<%@ Master Language="C#" MasterPageFile="~/MySite.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div class="column">
<asp:ContentPlaceHolder ID="ContentPlaceHoder1" runat="server" />
</div>
<div class="column">
<asp:ContentPlaceHolder ID="ContentPlaceHoder2" runat="server" />
</div>
<div class="rightColumn">
<asp:ContentPlaceHolder ID="ContentPlaceHoder3" runat="server" />
</div>
</asp:Content>
[/code]
SectionServices.master
[code]
<%@ Master Language="C#" MasterPageFile="~/MySite.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div class="column">
<asp:ContentPlaceHolder ID="ContentPlaceHoder1" runat="server" />
</div>
<div class="rightColumn">
<asp:ContentPlaceHolder ID="ContentPlaceHoder2" runat="server" />
</div>
</asp:Content>
[/code]
Products.aspx
[code]
<%@ Page Title="" Language="C#" MasterPageFile="~/SectionProducts.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHoder1" runat="Server">
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHoder2" runat="Server">
Products,Products,Products 2
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHoder3" runat="Server">
Products,Products,Products 3
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
</asp:Content>
[/code]
Services.aspx
[code]
<%@ Page Title="" Language="C#" MasterPageFile="~/SectionServices.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHoder1" runat="Server">
Services,Services,Services 1
<br />
Services,Services,Services
<br />
Services,Services,Services
<br />
Services,Services,Services
<br />
Services,Services,Services
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHoder2" runat="Server">
Services,Services,Services 2
<br />
Services,Services,Services
<br />
Services,Services,Services
<br />
Services,Services,Services
<br />
Services,Services,Services
</asp:Content>
[/code]
在母版页中使用图片和超链接
在母版页中使用相对URL必须十分小心。
使用ASP.net控件,相对URL会解析为相对于母版本的URL。
母版中添加Asp.net Image控件
<asp:Image ImageUrl="Picture.gif" run="server"/>
母版在MasterPages的文件夹中,则URL会解析为:/MasterPages/Pictrue.gif
即使内容页在一个完全不同的文件夹中,ImageUrl属性仍然会解析为相对于母版页的URL而不是相对于内容页的URL。
使用HTML标签,情况完全不同<a><img>
在母版中添加<img src="picture.gif"/>
内容页在ContentPages文件夹中则会解析为: /ContentPages/picture.gif
解决方法:
1、用ASP.Net控件替换使用相对URL的HTML元素
2、用绝对URL来替换相对URL 比较僵硬
3、在母版中使用方法来重新解析相对URL。 MasterUrl()
ImageMaster.master [in MasterPages文件夹]
[code]
<%@ Master Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<img src='<%=Page.ResolveUrl("~/MasterPages/Logo.gif") %>' alt="Website Logo" />
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
[/code]
ImageContent [在根目录下]
[code]
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/ImageMaster.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
Head
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<h1>
Image Content</h1>
</asp:Content>
[/code]
在Web配置文件中注册母版页
<configuration>
<system.web>
<pages masterPageFile="~/SimpleMaster.master"/>
</system.web>
</configuration>
母版页只能应用到内容页,如果一个页面没有Content控件,只是普通ASP.net页面的话,母版页被忽略。
2011-4-28 10:24 danny
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="SimpleMaster.master.cs"
Inherits="SimpleMaster" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head 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>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div class="content">
<div class="leftColumn">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
<div class="rightColumn">
<asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
</asp:ContentPlaceHolder>
</div>
<br class="clear" />
</div>
</form>
</body>
</html>
----------------------------------------
<%@ Page Title="" Language="C#" MasterPageFile="~/SimpleMaster.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
SimpleContent
</asp:Content>
<asp:Content ID="Content2" 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="Content3" 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>
嵌套母版本
[code]
<%@ Master Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<style type="text/css">
html
{
background-color: DarkGreen;
font: 14px Georgia,Serif;
}
.content
{
width: 700px;
margin: auto;
border-style: solid;
background-color: White;
padding: 10px;
}
.tabstrip
{
padding: 3px;
border-top: solid 1px black;
border-bottom: solid 1px black;
}
.tabstrip a
{
font: 14px Arial;
color: DarkGreen;
text-decoration: none;
}
.column
{
float: left;
padding: 10px;
border-right: solid 1px black;
}
.rightColumn
{
float: left;
padding: 10px;
}
.clear
{
clear: both;
}
</style>
<title>My Site Master</title>
</head>
<body>
<form id="form1" runat="server">
<div class="content">
<asp:Image ID="imgLogo" ImageUrl="~/Images/1.gif" AlternateText="Website Logo" runat="server" />
<div class="tabstrip">
<asp:HyperLink ID="lnkProducts" Text="Products" NavigateUrl="~/Products.aspx" runat="server" />
<asp:HyperLink ID="lnkServices" Text="Services" NavigateUrl="~/Services.aspx" runat="server" />
</div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
<br class="clear" />
Copyright ©2010 by Danny.
</div>
</form>
</body>
</html>
[/code]
SectionProducts.master
[code]
<%@ Master Language="C#" MasterPageFile="~/MySite.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div class="column">
<asp:ContentPlaceHolder ID="ContentPlaceHoder1" runat="server" />
</div>
<div class="column">
<asp:ContentPlaceHolder ID="ContentPlaceHoder2" runat="server" />
</div>
<div class="rightColumn">
<asp:ContentPlaceHolder ID="ContentPlaceHoder3" runat="server" />
</div>
</asp:Content>
[/code]
SectionServices.master
[code]
<%@ Master Language="C#" MasterPageFile="~/MySite.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div class="column">
<asp:ContentPlaceHolder ID="ContentPlaceHoder1" runat="server" />
</div>
<div class="rightColumn">
<asp:ContentPlaceHolder ID="ContentPlaceHoder2" runat="server" />
</div>
</asp:Content>
[/code]
Products.aspx
[code]
<%@ Page Title="" Language="C#" MasterPageFile="~/SectionProducts.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHoder1" runat="Server">
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHoder2" runat="Server">
Products,Products,Products 2
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHoder3" runat="Server">
Products,Products,Products 3
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
<br />
Products,Products,Products
</asp:Content>
[/code]
Services.aspx
[code]
<%@ Page Title="" Language="C#" MasterPageFile="~/SectionServices.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHoder1" runat="Server">
Services,Services,Services 1
<br />
Services,Services,Services
<br />
Services,Services,Services
<br />
Services,Services,Services
<br />
Services,Services,Services
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHoder2" runat="Server">
Services,Services,Services 2
<br />
Services,Services,Services
<br />
Services,Services,Services
<br />
Services,Services,Services
<br />
Services,Services,Services
</asp:Content>
[/code]
在母版页中使用图片和超链接
在母版页中使用相对URL必须十分小心。
使用ASP.net控件,相对URL会解析为相对于母版本的URL。
母版中添加Asp.net Image控件
<asp:Image ImageUrl="Picture.gif" run="server"/>
母版在MasterPages的文件夹中,则URL会解析为:/MasterPages/Pictrue.gif
即使内容页在一个完全不同的文件夹中,ImageUrl属性仍然会解析为相对于母版页的URL而不是相对于内容页的URL。
使用HTML标签,情况完全不同<a><img>
在母版中添加<img src="picture.gif"/>
内容页在ContentPages文件夹中则会解析为: /ContentPages/picture.gif
解决方法:
1、用ASP.Net控件替换使用相对URL的HTML元素
2、用绝对URL来替换相对URL 比较僵硬
3、在母版中使用方法来重新解析相对URL。 MasterUrl()
ImageMaster.master [in MasterPages文件夹]
[code]
<%@ Master Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<img src='<%=Page.ResolveUrl("~/MasterPages/Logo.gif") %>' alt="Website Logo" />
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
[/code]
ImageContent [在根目录下]
[code]
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/ImageMaster.master" %>
<script runat="server">
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
Head
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<h1>
Image Content</h1>
</asp:Content>
[/code]
在Web配置文件中注册母版页
<configuration>
<system.web>
<pages masterPageFile="~/SimpleMaster.master"/>
</system.web>
</configuration>
母版页只能应用到内容页,如果一个页面没有Content控件,只是普通ASP.net页面的话,母版页被忽略。
2011-4-28 10:24 danny