C#页面设计技术

一、母版页

1、母版页是指为应用程序中的页创建一致的布局,为应用程序中的所有页、或一组页定义所需的外观和标准行为,然后创建要显示内容的各个页内容,并将内容页与母版页相关联。

      当用户请求内容页的时候,内容页和母版页合并,将内容页的内容与母版页的布局相组合,然后再展示出来。(从这里我们可以看出,母版页类似于一个框架,内容页就是盖在框架外的饰品,注意,如果      我们只有母版页,没有内容页,这个页面是没有用处的)

      从上,我们可以大致得出母版页具有:易于站点修改和维护、减轻工作人员工作压力;提高内容的整合能力;有利于实现页面布局;提供一种便利的对象模型。

2、母版页的创建(注:此处本人使用的是vs2017编辑器)

      选择母版页:

     

     

 上面我们就直接创建好了一个母版页,然后我们查看它的控件,会发现,它会多有一个ContentPlaceHolder控件,在这里面,我们一般用来放内容页面所需的js、css代码。

3、内容页的创建:(注意右下角选择母版页的选择框)

     

     

      这样我们这个内容页也就创建好了,从创建完的效果我们可以看出,该aspx文件和往常的文件有所不同:

     

      1、内容页中多了一个MasterPageFile属性,从这个属性的值中我们可以看出它实际上是指出了母版页的位置。除此之外,我们仔细观察.master(母版页)中的代码和.aspx(内容页)中的代码,我们会发现内容页中包含有两个ContentPlaceHolder控件,一个id是head,一个id是ContentPlaceHolder1;其中head是用来写标题一类的CSS、Javascript代码;另外的就是其余部分的了。内容页和母版页之间通过这两个id进行对应绑定。注意:ContentPlaceHolder控件是不能够额外添加的。

      

      

       2、从上图中我们可以看出该内容页中仅有一个<asp:Conten>控件,它和母版页中的ContenPlaceHolder相对应,两个属性相绑定。在ContenPlaceHolderID中写HTML、JS代码。

      

      

  4、页面运行机制

(1)用户访问内容页;

(2)获取内容页后,读取@Page指令,若指令引用到一个母版页,则也读取该母版页,若为第一次请求,则两个页都要进行编译;

(3)母版页合并到内容页的控件树中;

(4)各个Content控件的内容合并到母版页中相对应的ContentPlaceHolder控件中;

(5)呈现结果页;

         母版页和内容页处理顺序

第01步、内容页的 Page_PreInit
第02步、母版页的 Page_Init
第03步、内容页的 Page_Init
第04步、内容页的 Page_InitComplete
第05步、内容页的 Page_PreLoad
第06步、内容页的 Page_Load
第07步、母版页的 Page_Load
第08步、母版页或内容页的 按钮点击等回发事件(Master或Content的Button事件不会同时触发)
第09步、内容页的 Page_LoadComplete
第10步、内容页的 Page_PreRender
第11步、母版页的 Page_PreRender
第12步、内容页的 Page_PreRenderComplete
第13步、内容页的 Page_SaveStateComplete
第14步、母版页的 Page_Unload
第15步、内容页的 Page_Unload

5、在内容页中访问母版页

弱类型引用:使用FindControl方法传递一个控件的ID

 

 

 输出结果

强类型引用:访问模板页中公开属性和方法

 

 

 以上是主要的代码,最后输出结果和上面的一样。

我们需要关注的点在于:

需要将Master显式地转换为母版页类型(MasterPage)。则需要在页面中使用@ MasterType指令,则可以创建对母版页的强类型引用:(该指令添加在内容页中)

<%@ MasterType TypeName="MasterPage" %> 或 <%@ MasterType VirtualPath="~/MasterPage.master" %>

//在内容页中对母版页中属性访问可修改为:

 string strSearch = Master.SearchText;

猜你喜欢

转载自www.cnblogs.com/TomHard/p/12694667.html
今日推荐