ASP.NET内容页中访问母版页中的对象

在ASP.NET2.0开始,提供了母版页的功能。母版页由一个母版页和多个内容页构成。母版页的主要功能是为ASP.NET应用程序中的页面创建相同的布局和界面风格。母版页的使用与普通页面类似,可以在其中放置文件或者图形、任何HTML控件和Web控件、后置代码等。

母版页仅仅是一个页面模板,单独的母版页是不能被用户所访问的。母版页和内容页有着严格的对应关系。母版页中包含多少个ContentPlaceHolder控件,那么内容页中也必须设置与其对应的Content控件。

回顾了母版页的概念后,我今天主要是总结如何在普通的页面中访问与其关联的母版页中的对象(比如说控件的值):

我们知道 Page对象具有一个公共属性Master,该属性能够实现对母版页基类MasterPage的引用;MasterPage相当于普通ASP.NET页面中的Page对象。因此,可以使用MasterPage对象实现对母版页中各个子对象的访问。

具体的程序实例如下:

在一个ASP.NET空网站项目中,添加一个母版页MasterPage1.Master和一个普通页面Default。然后分别在母版页和内容页中添加一个Label按钮。母版页中的Label控件的ID属性为labMaster,用来显示当前系统日期;内容页的Label控件的ID属性为labContent,用来显示(访问)母版页中的Label控件值。
   在MasterPage1.Master母版页的Page_Load事件中添加如下代码:

1 protected void Page_Load(object sender, EventArgs e)
2     {
3         this.labMaster.Text = "今天是" + DateTime.Today.Year + "年" + DateTime.Today.Month + "月" + DateTime.Today.Day + "日";
4     }

在Default.aspx内容页中的Page_LoadComplete事件中,添加如下代码:

1 protected void Page_Complete(object sender, EventArgs e)
2     {
3         if (!this.IsPostBack)
4         {
5             //实现普通页面访问模板页中的控件;
6             Label masterLabel = this.Master.FindControl("labMaster") as Label;
7             this.labContent.Text = masterLabel.Text;
8         }
9     }

运行程序后,在内容页的Label控件中就显示了母版页Label.text的值。
   需要注意的是:内容页的Page_Load事件时先于母版页的Page_Load事件引发。所以这里使用的是Page_LoadComplete事件。其中Page_LoadComplete事件是在生命周期内和页面加载结束时触发。

时间: 2024-11-03 03:45:23

ASP.NET内容页中访问母版页中的对象的相关文章

Asp.net MVC访问母版页中嵌套的iframe页面时,如果session或cookie过期,登录验证超时怎样自动跳转到登录页

一般登录验证的过滤器中,使用验证过滤器的Redirect方法,将请求重定向到指定的URL.但是如果我们要访问的页面是一个嵌套在母版页中的iframe页面时,这种重定向只会对iframe页面凑效,也就是会将iframe也重定向到登录页,这样就有违我们的目的了.所以我就尝试了很多方法来实现让整个页面重定向到登录页的目标,接下里我就来分享一下我的心路历程~~如果想看解决方法,可以直接拉到最后,忽略我的啰啰嗦嗦~~ 首先,我尝试了替换掉Redirect,改用了Write方法,意在将指定字符串写入HTTP

ubuntu 中访问windos中共享文件夹的方法

方法1: Ubuntu下访问局域网中的网络邻居的方法: 在Ubuntu系统地址栏里键入smb://访问windos的ip, 就可以浏览网上邻居,或访问局域网中的windows主机方法2: 使用如下命令,讲共享文件夹挂在在自己的ubuntu电脑上 sudo mount.cifs //your windows ip/username /mnt/winshare  defaults,auto,username=username,password=your password,codepage=936,i

.net中的母版页中使用FindControl的使用

前几天,遇到一个字段比较多的用户填写的页面(数据库表中就将近100个字段),怎么讲这些input的标签的值,保存数据库了?(使用的是母版页下面的aspx,不包括前段获取input的值,传给后台) 作为一个天生喜欢偷懒的程序员总想着办法来偷懒,就想在aspx.cs中,找到所有的input循环遍历获取他们的值.一开始直接使用下面代码 1 var controls=this.Page.Controls;//获取该页面的控件 2 foreach(var ctr in controls){ 3 if(ct

C#中在内容页获取其模板页中的变量,或者值

在CSDN的博文中看到了 muziduoxi 的文章:http://blog.csdn.net/muziduoxi/article/details/5386543 虽然里面提到的方法没有解决我的难题,但是我也是根据里面的方法想到现在所用的方法的,所以还是需要感谢  因为我要的变量初始化的时候是空的,如果使用muziduoxi的方法就只能读取到初始化时候的值,我做了个跟踪,发现有模板页的页面运行的时候是先运行本页的变量的定义→  到模板页的变量定义→ 到本页的Page_Load方法→ 到模板页的P

Asp.Net母版页和内容页运行机制

Asp.Net母版页和内容页运行机制来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=96从上面的讲解中可以看出,单独的母版页是不能被用户所访问的.没有内容页支持,母版页仅仅是一个页面模板,没有更多的实用价值.同样道理,单独的内容页没有母版页的支持,也不能够应用.这两者是不可分割的,只有同时正确创建和使用母版页及内容页,才能发挥它们的强大功能.为了便于读者理解,有必要讲解一下母版页与内容页的运行机制.母版页和内容页的运行过程可以概括为以下5个步骤

ASP.NET 母版页和内容页的加载顺序

Master 模板页Content 内容页如果希望Master页面的数据传给Content页面,请Init如果希望Content页面的数据传给Master页面,请重载Load具体细节不多说了,看下面页面的加载顺序就明白原因(对于使用MasterPage方式做网站的是很有用的)母版页控件 Init 事件内容控件 Init 事件母版页 Init 事件内容页 Init 事件内容页 Load 事件母版页 Load 事件内容控件 Load 事件内容页 PreRender 事件母版页 PreRender 事

C#-WebForm-★ASP.NET中的母版页★

何为母版页,顾名思义母版就是模版,就像在PPT里面的板式或主题一样,大框架已经有了,我们的任务就是向里面添加具体的内容.这样我们制作的所有幻灯片的外观大体都是一样的. 在ASP.NET中母版页有两种作用,一是提高代码的复用(把相同的代码抽出来),二是使整个网站保持一致的风格和样式. 一.新建母版页 添加新项 → 母版页 母版页代码: 二.如何套用 添加新项 → 新建Web窗体 → 选择母版页 → 选择母版 网页如下: 三.添加新的文本位置预留 四.子页如何往母版页中传值 (1)按钮点击事件 (2

CSS 使用母版页的内容页如何调用css和javascript

方案一: 把所有的css样式和javascript函数放到母版页的<head></head>中,我觉得这样做的弊端就是导致母版页的<head></head>区特别臃肿,同时如果原来两个频道页中包含同名的css声明或javascript函数,但却是不同样式或执行不同操作. 方案二: 在内容页的PageLoad事件中通过代码来指定本内容页的css文件. 代码如下 static public class ControlHelper {  static public

Android: 在native中访问assets全解析

本文总结在Android Native C++开发中访问APK中的assets资源的方法 在CMake中添加相关NDK LIB的 依赖 因为我们接下来用到的一些函数实现在NDK库libandroid.so中,因此我们直接在CMakeList.txt中添加对其依赖即可: target_link_libraries( # Specifies the target library. native-lib #lib to link android # other libs ) 如果没有添加此依赖,显然会