`
cab0605
  • 浏览: 108774 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

转]asp.net 母版页使用详解

阅读更多

http://jcobra.blog.163.com/blog/static/470493200966287962/

 

母版页(扩展名是.master)
它的使用跟普通的页面一样,可以可视化的设计,也可以编写后置代码。与普通页面不一样的是,它可以包含ContentPlaceHolder控件,ContentPlaceHolder控件就是可以显示内容页面的区域。
代码如下:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
......
    <form id="form1" runat="server">
    <div>
        <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
        </asp:contentplaceholder>
    </div>
    </form>
......

[转]asp.net 母版页使用详解 - 墨艺 - ~~无言~~

注意:
    1、这里的声明指示符是“<%@ Master...%>”
    2、其内部包含<asp:contentplaceholder......>控件

内容页(扩展名是.aspx)
在建立内容页面的时候,在“添加新项”对话框中要选中“选择母版页”复选框。这样建立的页面就是内容页面,内容页面在显示的时候会把母版面的内容一起以水印淡化的形式显示出来,而在母版页中的ContentPlaceHolder控件区域会被内容页面中的Content控件替换,程序员可以在这里编写内容页面中的内容。
代码如下:
<%@ Page Language="C#" MasterPageFile="~/MasterPage/MP.master" AutoEventWireup="true" CodeFile="Show1.aspx.cs" Inherits="MasterPage_Show1" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>

[转]asp.net 母版页使用详解 - 墨艺 - ~~无言~~

注意:
    1、这里的声明指示符中多了一项MasterPageFile="~/MasterPage/MP.master",这一项是在创建内容页面时根据“选择母版页”复选框的选中情况生成的。它指明了该页是内容页面,也指明了该内容页面的母版页是哪个页面。
    2、“<asp:Content ......>”就是要在其中显示的内容。

一、在母版页中编写后台代码,访问母版页中的控件:
    与普通的aspx页面一样,双击按钮即可编写母版页中的代码
   
二、在内空页面中编写后台代码,访问内容页面中的控件:
    与普通的aspx页面一样,双击按钮即可编写母版页中的代码
   
三、在内容页面中编写代码访问母版页中的控件:
    在内容页面中有个Master对象,它是MasterPage类型,它代表当前内容页面的母版页。通过这个对象的FindControl方法,我们可以找到母版面中的控件,这样就可以在内容页面中操作母版页中的控件了。
        TextBox txt = (TextBox)((MasterPage)Master).FindControl("txtMaster");
        txt.Text = this.txtContent1.Text;
 
       
四、在内容页面中编写代码访问母版页中的属性和方法:
    仍可能通过Master对象进行访问,只不过在这里要把Master对象转换成具体的母版页类型,然后再调用母版页中的属性和方不法。
    这里要说明的是:母版页中要被内容页面调用的属性和方法必须是Public修改的。否则无法调到。
        假设母版页中有下面的属性和方法:
        public string TextValue
        {
            get
            {
                return this.txtMaster.Text;
            }
            set
            {
                this.txtMaster.Text = value;
            }
        }
        public void show(string str)
        {
            txtMaster.Text = str;
        }
       在内容页面中可以通过下代的代码来实现对母版页中方法的调用:
        ((MasterPage_MP)Master).show(this.txtContent1.Text);
        ((MasterPage_MP)Master).TextValue = this.txtContent1.Text;

       
五、在母版页中访问内容页面的控件:
    在母版页中可以通过在ContentPlaceHolder控件中调用FindControl方法来取得控件,然后对控件进行操作。
    ((TextBox)this.ContentPlaceHolder1.FindControl("txtContent1")).Text = this.txtMaster.Text;
   
六、在母版页中访问内容页面中的方法和属性:
    在母版页中调用子页面中的属性和方法有点难度,因为我们无法像上一步中那样通过FindControl来找到方法和属性。
    于是我们想到在母版面的声明指示符中加入下面的代码:
        <%@ Reference Page="~/MasterPage/Show1.aspx" %>
    在运行的时候回发现有错误,错误的内容是“无法实现循环引用”。这是因为默认在子页面中引用了母版页,你也就不能再在母版页中引用子页面了。
    我在网上也没找到更好的解决方法,但这使我们想起C#是的“反射”,它可以使我们动态获取页面对象,并且可以调用它的属性和方法。
    代码如下:
        Type t = this.ContentPlaceHolder1.Page.GetType();
        PropertyInfo pi = t.GetProperty("ContentValue"); //获取ContentValue属性
        pi.SetValue(this.ContentPlaceHolder1.Page,this.txtMaster.Text,null);    //给属性赋值
       
        MethodInfo mi = t.GetMethod("SetValue"); //获取SetValue()方法
        object[] os = new object[1];   //建造输入参数
        os[0] = txtMaster.Text;
        mi.Invoke(this.ContentPlaceHolder1.Page, os);    //调用SetValue方法
       
七、在有多个内容页面使用母版面的情况下,在母版页中根据不同的内容页面实现不同的操作
    在母版页中可以加入多个不同的内容页面,但在设计期间,我们无法知道当前运行的是哪个内容页面。所以只能通过分支判断当前运行的是哪个子页面,来执行不同的操作。这里也用到了反射的知识。
    代码如下:
        string s = this.ContentPlaceHolder1.Page.GetType().ToString();   //取出内容页面的类型名称
        if (s == "ASP.default17_aspx")   //根据不同的内容页面类型执行不同的操作
        {
            ((TextBox)this.ContentPlaceHolder1.FindControl("TextBox2")).Text = "MastPage";
        }
        else if (s == "ASP.default18_aspx")
        {
            ((TextBox)this.ContentPlaceHolder1.FindControl("TextBox2")).Text = "Hello MastPage";
        }
八、在母版面与内容页面中JS代码的操作
    在母版页或内容页面中的控件运行之后会自动生成ID,如文本框的ID是txtContent1,在运行之后ID会自动变为ctl00_ContentPlaceHolder2_txtContent1,name属性会变为ctl00$ContentPlaceHolder2$txtContent1。
    在JS代码中,我们用document.getElementById()方法,根据id取得控件对象的时候,应当使用ctl00_ContentPlaceHolder2_txtContent1这个ID名,否则会产生“未找到对象”的异常。
  
母版页运行机制
母版页仅仅是一个页面模板,单独的母版页是不能被用户所访问的。单独的内容页也不能够使用。母版页和内容页有着严格对应关系。母版页中包含多少个ContentPlaceHolder控件,那么内容页中也必须设置与其相对应的Content控件。当客户端浏览器向服务器发出请求,要求浏览某个内容页面时,ASP.NET引擎将同时执行内容页和母版页的代码,并将最终结果发送给客户端浏览器。
母版页和内容页的运行过程可以概括为以下5个步骤。
(1)用户通过键入内容页的URL来请求某页。
(2)获取内容页后,读取@ Page指令。如果该指令引用一个母版页,则也读取该母版页。如果是第一次请求这两个页,则两个页都要进行编译。
(3)母版页合并到内容页的控件树中。
(4)各个Content控件的内容合并到母版页中相应的ContentPlaceHolder控件中。
(5)呈现得到结果页。

母版页和内容页事件顺序

[转]asp.net 母版页使用详解 - 墨艺 - ~~无言~~

(1)母版页中控件Init事件;
(2)内容页中Content控件Init事件;
(3)母版页Init事件;
(4)内容页Init事件;
(5)内容页Load事件;
(6)母版页Load事件;
(7)内容页中Content控件Load事件;
(8)内容页PreRender事件;
(9)母版页PreRender事件;
(10)母版页控件PreRender事件。
(11)内容页中Content控件PreRender事件。

使用母版页的优点:
(1)有利于站点修改和维护,降低开发人员的工作强度
(2)有利于实现页面布局
(3)提供一种便于利用的对象模型

 

分享到:
评论

相关推荐

    【ASP.NET编程知识】详解Asp.Net母版页元素ID不一致的体现.docx

    总之,ASP.NET母版页元素ID不一致的现象是由ASP.NET的客户端ID生成机制引起的,旨在保证在复杂的页面结构中控件ID的独特性。理解这一机制以及如何调整客户端ID模式,对于高效地开发和维护ASP.NET应用程序至关重要。

    asp.net 母版页源程序

    母板页(MasterPage)中设置主题(附程序详解)

    net母版页设置详解

    对于初学者来说,理解并掌握.net母版页的使用至关重要,因为它能够极大地提高开发效率和网站的维护性。 首先,我们来详细了解母版页的基本结构。一个母版页通常包含HTML结构、样式表链接、脚本引用以及一些重复性的...

    详解Asp.Net母版页元素ID不一致的体现

    ***母版页(Master Page)是.NET框架提供的一种布局技术,用于创建网站的统一布局结构,可使多个页面共享相同的用户界面元素,如菜单栏、页脚、样式等,以此来维护网站风格的一致性和提高开发效率。***母版页中定义...

    完全手册ASP.NET2.0网路开发详解(源码)

    《完全手册ASP.NET 2.0 网络开发详解》是一本深入解析ASP.NET 2.0技术的专业书籍,附带的源码文件旨在帮助读者更好地理解和实践书中的理论知识。这本书涵盖了ASP.NET 2.0的核心概念、开发工具、架构设计、页面生命...

    《圣殿祭司的ASP.NET 2.0开发详解——使用C#》光盘

    《圣殿祭司的ASP.NET 2.0开发详解——使用C#》是一部专注于ASP.NET 2.0技术的深入教程,特别强调了使用C#编程语言进行开发的方法。这本书籍光盘包含了丰富的资源,旨在帮助开发者全面掌握ASP.NET 2.0框架,提升Web...

    圣殿祭司的ASP.NET 2.0开发详解c# 书中例子代码

    在《圣殿祭司的ASP.NET 2.0开发详解——使用C#》一书中,作者深入浅出地介绍了ASP.NET 2.0的核心概念和技术,结合C#编程语言,帮助读者掌握Web开发的关键技能。 首先,ASP.NET 2.0引入了许多创新特性,如控件事件...

    vs.net母板详解

    1. 在Visual Studio中选择“添加新项”(Add New Item),然后选择“ASP.NET母版页”模板。 2. 在母版页中定义内容占位符,例如 `&lt;asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"&gt;&lt;/asp:...

    完全手册:ASP.NET2.0网络开发详解教程光盘

    ASP.NET 2.0还引入了母版页(Master Pages)的概念,允许开发者定义一个通用的布局,子页面可以继承这个布局,从而保持整个网站的统一性。母版页与内容页的结合,使得头部、底部和侧边栏等公共元素只需要编写一次。 ...

    《完全手册:ASP.NET.2.0网络开发详解》[源代码]

    本书是一本ASP.NET 2.0技术...【第4篇 网站设计】则着重讨论了母版页、成员管理等网站设计中的必要技术,最后【第5篇 综合实例】介绍Web系统三层结构,实现了一个较大的课程设计,并帮助读者踏上Starter Kit学习之路。.

    《圣殿祭司的ASP.NET 2.0开发详解》光盘内容

    2. **母版页和内容页**:母版页是ASP.NET 2.0中实现页面布局的一种方法,可以定义整个网站的统一头部、底部和侧边栏。内容页则可以根据需要插入到母版页中,实现页面内容的个性化。光盘可能包含不同类型的母版页和...

    ASP.NET 2.0 程序开发详解(光盘)

    3. **母版页(Master Pages)**:母版页是ASP.NET 2.0的一个重要特性,允许开发者创建统一的页面布局,提高网站的视觉一致性。通过将导航和头部等通用元素放入母版页,子页面可以通过继承母版页来保持设计的一致性。 ...

    【ASP.NET编程知识】详解ASP.NET页面生命周期.docx

    ASP.NET页面生命周期是ASP.NET Web Forms开发中的核心概念,它描述了一个ASP.NET页面从请求开始到响应返回给客户端的整个过程。在这个过程中,页面会经历一系列的阶段,每个阶段都有其特定的任务和目的,允许开发者...

    第五章修改-圣殿祭司的ASP.NET+2.0开发详解+使用C#

    综上所述,"圣殿祭司的ASP.NET 2.0开发详解 使用C# 第五章修改.pdf"文档很可能是对原书中第五章的更新和扩展,涵盖了ASP.NET 2.0的关键特性,特别是控件事件、母版页、数据绑定、配置管理和C# 2.0的新特性。...

    asp.net中的母板详解

    ASP.NET中的母版页(Master Pages)是微软.NET框架中用于构建统一网站布局的重要特性,它允许开发者创建一个全局模板,定义网站的通用头部、底部、侧边栏等元素,从而实现页面的标准化设计和高效的代码重用。...

    圣殿祭司的ASP.NET.2.0.开发详解

    ### 圣殿祭司的ASP.NET 2.0开发详解 #### 一、ASP.NET 2.0概述 ASP.NET 2.0是Microsoft推出的一个用于构建动态网页的应用程序框架,它建立在.NET Framework之上,提供了强大的功能和高度的灵活性。与早期版本相比...

    圣殿祭司的ASP.NET 2.0开发详解c# 5

    《圣殿祭司的ASP.NET 2.0开发详解c# 5》是一份深入探讨ASP.NET 2.0框架与C#编程语言结合使用的专业文档。ASP.NET 2.0是微软.NET Framework的重要组成部分,它为Web应用程序的开发提供了强大而高效的工具集。C# 5则是...

    ASP.NET2.0+sql server 网络应用开发详解

    《ASP.NET 2.0 + SQL Server 网络应用开发详解》这本书是针对使用ASP.NET 2.0和SQL Server进行Web应用开发的详细指南。ASP.NET是Microsoft .NET框架的一部分,它提供了一种高效、面向对象的方式来构建动态网站、web...

    圣殿祭司的ASP.NET 2.0开发详解

    "圣殿祭司的ASP.NET 2.0开发详解"可能是一本详细介绍了该技术的书籍或教程,旨在帮助开发者深入理解和应用ASP.NET 2.0进行Web开发。 1. **.NET Framework基础**:ASP.NET 2.0建立在.NET Framework 2.0之上,这意味...

Global site tag (gtag.js) - Google Analytics