文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Asp.net 动态加载母版页

Asp.net 动态加载母版页

时间:2010-12-10  来源:花猫.NET

    实现动态加载母版页的核心是设置MasterPageFile属性值,需要强调的是应将该属性设置在Page_PreInit事件处理程序中,因为Page_PreInit事件是页面生命周期中较先引发的事件,如果试图在Page_Load事件中设置MasterPageFile属性将会发生页面异常。

MasterPageFile 属性

    用于获取或设置包含当前内容的母版页的名称。

语法:

public string MasterPageFile { get; set; }


属性值:当前母版页的父级母版页的名称;如果当前母版页没有父级,则为空引用。

PreInit事件

   在页初始化开始时发生。

语法:

public event EventHandler PreInit


说明:PreInit事件是在页生命周期的早期阶段中可以访问的事件。在PreInit事件后,将加载个性化信息和页主题。

下面的实例实现了如何简单动态加载母版页,程序开发步骤如下:

   (1)新建一个网站,将其命名为15_02。

   (2)在该网站的解决方案下,用鼠标右键单击网站名称,在弹出的快捷菜单中选择“添加新项”命令,打开“添加新项…”对话框,首先添加两个母版页,分别命名为MasterPage和OtherMasterPage,然后添加一个基母版类BaseMaster,主要用于设置页面的标题。

基母版类BaseMaster的源代码如下:

public class BaseMaster : MasterPage//继承MasterPage类 

    string _pageTitle = string.Empty; 
    public virtual String TitleName//通过virtual关键字定义属性TitleName 
    { 
        get 
        { 
            return _pageTitle; 
        } 
    } 

       母版页MasterPage与母版页OtherMasterPage功能是完全一样的,只是显示的内容有所区别,因此下面只给出母版页MasterPage的源代码。

<%@ Master Language="C#" Inherits="BaseMaster" %> 
<script runat="server"> 
    public override String TitleName 
    { 
        get 
        { 
            return "加载MasterPage.master"; 
        } 
    } 
    void Page_Load(Object sender, EventArgs e) 
    { 
        if (!Page.IsPostBack) 
        { 
            string selItem = Request.QueryString["masterpage"]; 
            ListItem item = DropDownList1.Items.FindByValue(selItem); 
            if (item != null) 
            { 
                item.Selected = true; 
            }             
        } 
    } 
    void SelectedMaster(Object sender, EventArgs e) 
    { 
        if (DropDownList1.SelectedValue == "other") 
        { 
            string url = Request.Path + "?masterpage=other"; 
            Response.Redirect(url); 
        } 
    } 
</script> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title></title> 
</head> 
<body leftmargin="0" topmargin="0"> 
    <form id="form1" runat="server"> 
        <div align="center"> 
            <table height="100%" border="0" cellpadding="0" cellspacing="0" 
bgcolor="#FFFFFF" style="width: 979px" background="images/博客首页面.JPG"> 
                <tr> 
                    <td align="right" valign="top" style="width: 887px;  
                        </td> 
                </tr> 
                <tr> 
           <td align="right" valign="bottom" style=" width: 887px;"> 
                        <div style="text-align: center"> 
                            <asp:DropDownList ID="DropDownList1" runat="server" 
                                AutoPostBack="True" ValidationGroup="Master" 
                                OnSelectedIndexChanged="SelectedMaster"> 
                                <asp:ListItem Value="default">默认母版页</asp:ListItem> 
                                <asp:ListItem Value="other">动态母版页</asp:ListItem> 
                            </asp:DropDownList> 
                        </div> 
                    </td> 
                </tr> 
                <tr> 
                    <td align="right" valign="top" style="width: 887px"> 
                     </td> 
                </tr> 
                <tr> 
                    <td valign="top" style="width: 887px"> 
                        <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
                            <tr> 
                                <td width="244" valign="top"> 
                                    </td> 
                            </tr> 
                        </table> 
                        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> 
                        </asp:ContentPlaceHolder> 
                    </td> 
                </tr> 
                <tr> 
                    <td style="width: 887px" > 
                        </td> 
                </tr> 
                <tr> 
                    <td align="center" class="baseline" style="width: 887px"></td> 
                </tr> 
            </table> 
        </div> 
    </form> 
</body> 
</html>

内容页Default的源代码如下:<%@ Page Language="C#" %> 
<%@ MasterType TypeName="BaseMaster" %> 
<script runat="server"> 
    void Page_PreInit(Object sender, EventArgs e) 
    { 
        if (Request.QueryString["masterpage"] == "other") 
        {            //设置当前页面的MasterPageFile属性、实现动态加载母版页 
            this.MasterPageFile = "OtherMasterPage.master"; 
        } 
        else 
        { 
            this.MasterPageFile = " MasterPage.master"; 
        } 
        this.Title = Master.TitleName;//设置当前页的标题 
    } 
</script> 
<asp:content id="Content1" contentplaceholderid="ContentPlaceHolder1" runat="server"> 
     <p>&nbsp;</p> 
        <h1 align=center> 
            动态加载母版页 
        </h1> 
     <p>&nbsp;</p><p>&nbsp;</p>     
</asp:content>

相关阅读 更多 +
排行榜 更多 +
吹风机射击 v1.0 安卓版

吹风机射击 v1.0 安卓版

飞行射击 下载
吹风机射击 v1.0 安卓版

吹风机射击 v1.0 安卓版

飞行射击 下载
吹风机射击 v1.0 安卓版

吹风机射击 v1.0 安卓版

飞行射击 下载