母板页的嵌套使用

出自:http://www.cnblogs.com/eddie005/services/trackbacks/442882.aspx
①首先是“父”母版页,与一般的母版页差不多,除了一些固定的内容,页面中间留下大片的“空白”区域:

<%@ Master Language="C#" CodeFile="NestedMasterParent.master.cs" Inherits="NestedMasterParent_master" %>

<!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 runat="server">
    
<title>MasterPage可以多层嵌套使用</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<table border="1" cellpadding="0" cellspacing="0" width="100%" height="100%">
        
<tr>
            
<td colspan="2" align="center" style="background-color: mediumturquoise" >MasterPage可以多层嵌套使用~~~</td>
        
</tr>
        
<tr>
            
<td valign="top" width="150" class="nav" style="background-color: lightcyan">
                
<table border="0" width="100%" cellpadding="4" cellspacing="0">
                    
<tr>
                        
<td><href="#">超链接一</a></td>
                    
</tr>
                    
<tr>
                        
<td><href="#">超链接二</a></td>
                    
</tr>
                    
<tr>
                        
<td><href="#">超链接三</a></td>
                    
</tr>
                    
<tr>
                        
<td><href="#">超链接四</a></td>
                    
</tr>
                    
<tr>
                        
<td><href="#">…………</a></td>
                    
</tr>
                    
<tr>
                        
<td style="font-size: x-small; color: forestgreen; ">(上面这些链接都是假的,点了也没什么效果)</td>
                    
</tr>
                
</table>
            
</td>
            
<td valign="top" align="center">
                
<asp:contentplaceholder id="ChildMaster" runat="server" />
            
</td>
        
</tr>
        
<tr>
            
<td colspan="2" align="center" style="background-color: lightyellow" ><href="#" onclick="window.close();">GoodBye</a></td>
        
</tr>
    
</table>
    
</form>
</body>
</html>



②然后是“子”母版页,它填充了上面的母板页所留下的空白,同时,再次留下3块“空白”的区域:

<%@ Master Language="C#" masterpagefile="~/NestedMasterParent.master" CodeFile="NestedMasterChild.master.cs" Inherits="NestedMasterChild_master" %>

<asp:content id="ChildMaster" contentplaceholderid="ChildMaster" runat="Server">
<table border="1" cellpadding="10" cellspacing="0" width="100%" height="100%">
    
<tr>
        
<td align="left" colspan="2" style="font-style: italic;">“子”母版页:
        
</td>
    
</tr>
    
<tr>
        
<td align="left" colspan="2" >
            
<asp:contentplaceholder id="ContentTitle" runat="Server" />
        
</td>
    
</tr>
    
<tr>
        
<td align="left" valign="top" >
            
<asp:contentplaceholder id="ContentText" runat="Server" />
        
</td>
        
<td align="left" width="150" valign="top" >
            
<asp:contentplaceholder id="ContentNav" runat="Server" />
        
</td>
    
</tr>
</table>
</asp:content>


稍稍遗憾的是,上面的HTML只能手写,因为不但我们在添加一个新母版页时无法勾选“选择母版页”,并且还无法切换到设计视图:


③最后是使用母版页的Page:

<%@ Page Language="C#" masterpagefile="~/NestedMasterChild.master" CodeFile="NestedMaster.aspx.cs" Inherits="NestedMaster_aspx" Title="Nested Master Pages" %>

<asp:content id="ContentTitle" contentplaceholderid="ContentTitle" runat="Server">
<h1>区域A:Content Title</h1>
</asp:content>

<asp:content id="ContentText" contentplaceholderid="ContentText" runat="Server">
<p>区域B</p>
</asp:content>

<asp:content id="ContentNav" contentplaceholderid="ContentNav" runat="Server">
<p>区域C</p>
</asp:content>


同样遗憾的是,设计上面的页面时也无法切换到设计视图。

在页面中的各个区域里设计好适当的内容后,运行起来,可以得到下面的效果:



这时候我们也许会有一个疑问:为什么要用多层嵌套的母版页?象上面的例子,一开始就在页面上
留下3块区域不是更方便吗?
大概应该这样考虑:站点可能使用一个统一的母版页所为主框架,然后在一片较大的区域中,某一些情况需要分成3块的样式,某一些则会是4块,也许还会有更复杂的要求,这时候多层嵌套就有用了。
但是问题又来了:设计起来这么不方便,该如何使用呢?

posted on 2006-09-21 22:11  头发乱了  阅读(849)  评论(1编辑  收藏  举报