内容页和母板页互访

、这里的声明指示符中多了一项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;
回答人的补充   2009-07-01 15:01
六、在母版页中访问内容页面中的方法和属性:    在母版页中调用子页面中的属性和方法有点难度,因为我们无法像上一步中那样通过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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值