知识大全 asp.net 母版和内容页执行顺序

Posted 内容

篇首语:给人以星火者,必怀火炬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 asp.net 母版和内容页执行顺序相关的知识,希望对你有一定的参考价值。

    Master Page(母版页)是VS 中新引入的一个概念 它很好地实现界面设计的模块化 并且实现实现了代码的重用 它就像婚纱影楼中的婚纱模板 同一个婚 纱模板可以给不同的新人用 只要把他们的照片贴在已有的婚纱模板就可以形成一张漂亮的婚纱照片 这样可以大大简化婚纱艺术照的设计复杂度 这里的母版页就 像婚纱模板 而内容页面就像两位新人的照片         Master Page(母版页 扩展名是 master)        它的使用跟普通的页面一样 可以可视化的设计 也可以编写后置代码 与普通页面不一样的是 它可以包含ContentPlaceHolder控件 ContentPlaceHolder控件就是可以显示内容页面的区域         代码如下         <%@ Master Language= C# AutoEventWireup= true CodeFile= MasterPage master cs Inherits= MasterPage %>        ……        <form id= form runat= server >        <div>        <asp:contentplaceholder id= ContentPlaceHolder runat= server >        </asp:contentplaceholder>        </div>        </form>        ……         注意         这里的声明指示符是 <%@ Master…%>         其内部包含<asp:contentplaceholder……>控件        内容页(扩展名是 aspx)        在建立内容页面的时候 在 添加新项 对话框中要选中 选择母版页 复选框 这样建立的页面就是内容页面 内容页面在显示的时候会把母版面的内容一起以水 印淡化的形式显示出来 而在母版页中的ContentPlaceHolder控件区域会被内容页面中的Content控件替换 程序员可以在这里编写内容 页面中的内容         代码如下         <%@ Page Language= C# MasterPageFile= ~/MasterPage/MP master AutoEventWireup= true CodeFile= Show aspx cs Inherits= MasterPage_Show Title= Untitled Page %>        <asp:Content ID= Content ContentPlaceHolderID= ContentPlaceHolder Runat= Server >        </asp:Content>          注意         这里的声明指示符中多了一项MasterPageFile= ~/MasterPage/MP master 这一项是在创建内容页面时根据 选择母版页 复选框的选中情况生成的 它指明了该页是内容页面 也指明了该内容页面的母版页是哪个页面         <asp:Content ……> 就是要在其中显示的内容         一 在母版页中编写后台代码 访问母版页中的控件         与普通的aspx页面一样 双击按钮即可编写母版页中的代码        二 在内空页面中编写后台代码 访问内容页面中的控件         与普通的aspx页面一样 双击按钮即可编写母版页中的代码        三 在内容页面中编写代码访问母版页中的控件         在内容页面中有个Master对象 它是MasterPage类型 它代表当前内容页面的母版页 通过这个对象的FindControl方法 我们可以找到母版面中的控件 这样就可以在内容页面中操作母版页中的控件了         TextBox txt = (TextBox)((MasterPage)Master) FindControl( txtMaster )         txt Text = this txtContent 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 txtContent Text)         ((MasterPage_MP)Master) TextValue = this txtContent Text;         五 在母版页中访问内容页面的控件         在母版页中可以通过在ContentPlaceHolder控件中调用FindControl方法来取得控件 然后对控件进行操作         ((TextBox)this ContentPlaceHolder FindControl( txtContent )) Text = this txtMaster Text;        六 在母版页中访问内容页面中的方法和属性         在母版页中调用子页面中的属性和方法有点难度 因为我们无法像上一步中那样通过FindControl来找到方法和属性         于是我们想到在母版面的声明指示符中加入下面的代码         <%@ Reference Page= ~/MasterPage/Show aspx %>        在运行的时候回发现有错误 错误的内容是 无法实现循环引用 这是因为默认在子页面中引用了母版页 你也就不能再在母版页中引用子页面了         在网上没找到更好的解决方法 但这使我们想起C#是的 反射 它可以使我们动态获取页面对象 并且可以调用它的属性和方法         代码如下         Type t = this ContentPlaceHolder Page GetType()         PropertyInfo pi = t GetProperty( ContentValue )     //获取ContentValue属性        pi SetValue(this ContentPlaceHolder Page this txtMaster Text null)      //给属性赋值        MethodInfo mi = t GetMethod( SetValue )     //获取SetValue()方法        object[] os = new object[ ];    //建造输入参数        os[ ] = txtMaster Text;        mi Invoke(this ContentPlaceHolder Page os)      //调用SetValue方法        七 在有多个内容页面使用母版面的情况下 在母版页中根据不同的内容页面实现不同的操作        在母版页中可以加入多个不同的内容页面 但在设计期间 我们无法知道当前运行的是哪个内容页面 所以只能通过分支判断当前运行的是哪个子页面 来执行不同的操作 这里也用到了反射的知识         代码如下         string s = this ContentPlaceHolder Page GetType() ToString()     //取出内容页面的类型名称        if (s == ASP default _aspx )    //根据不同的内容页面类型执行不同的操作                ((TextBox)this ContentPlaceHolder FindControl( TextBox )) Text = MastPage ;                else if (s == ASP default _aspx )                ((TextBox)this ContentPlaceHolder FindControl( TextBox )) Text = Hello MastPage ;                八 在母版面与内容页面中JS代码的操作        在母版页或内容页面中的控件运行之后会自动生成ID 如文本框的ID是txtContent 在运行之后ID会自动变为 ctl _ContentPlaceHolder _txtContent name属性会变为 ctl $ContentPlaceHolder $txtContent         在JS代码中 我们用document getElementById()方法 根据id取得控件对象的时候 应当使用ctl _ContentPlaceHolder _txtContent 这个ID名 否则会产生 未找到对象 的异常         母版页运行机制        母版页仅仅是一个页面模板 单独的母版页是不能被用户所访问的 单独的内容页也不能够使用 母版页和内容页有着严格对应关系 母版页中包含多少个 ContentPlaceHolder控件 那么内容页中也必须设置与其相对应的Content控件 当客户端浏览器向服务器发出请求 要求浏览某个内容 页面时 ASP NET引擎将同时执行内容页和母版页的代码 并将最终结果发送给客户端浏览器         母版页和内容页的运行过程可以概括为以下 个步骤         ( )用户通过键入内容页的URL来请求某页         ( )获取内容页后 读取@ Page指令 如果该指令引用一个母版页 则也读取该母版页 如果是第一次请求这两个页 则两个页都要进行编译         ( )母版页合并到内容页的控件树中         ( )各个Content控件的内容合并到母版页中相应的ContentPlaceHolder控件中         ( )呈现得到结果页         母版页和内容页事件顺序         ( )母版页中控件Init事件         ( )内容页中Content控件Init事件         ( )母版页Init事件         ( )内容页Init事件         ( )内容页Load事件         ( )母版页Load事件         ( )内容页中Content控件Load事件         ( )内容页PreRender事件         ( )母版页PreRender事件         ( )母版页控件PreRender事件         ( )内容页中Content控件PreRender事件         使用母版页的优点         ( )有利于站点修改和维护 降低开发人员的工作强度        ( )有利于实现页面布局        ( )提供一种便于利用的对象模型 cha138/Article/program/net/201311/12797

相关参考

知识大全 在ASP.NET中设置母版页

在ASP.NET中设置母版页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET 2.0 中的创建母版页

ASP.NET2.0中的创建母版页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  虽然母版页和内

知识大全 ASP.NET母版页TreeView导航链接问题

ASP.NET母版页TreeView导航链接问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 DIY“ASP.NET MVC 嵌套的母版页”项模板

DIY“ASP.NETMVC嵌套的母版页”项模板  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET分页链接方法

ASP.NET分页链接方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ///<summ

知识大全 ASP.NET返回上一页的方法小集

ASP.NET返回上一页的方法小集  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  返回上一页的这

知识大全 一个ASP.Net的DataGrid分页控件

一个ASP.Net的DataGrid分页控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  写的

知识大全 ASP.NET长文章分页显示函数

ASP.NET长文章分页显示函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  publicst

知识大全 Asp.Net 可定制分页用户控件

Asp.Net可定制分页用户控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  介绍借助AspN

知识大全 ASP.NET2.0的跨页回调

ASP.NET2.0的跨页回调  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在ASPNET中跨