在内容页中调用母版页控件一些方法总结

在内容页中调用母版页控件

1、在内容页中有个属性Master,可以通过它访问母版页。如我们要修改母版页上的标题,我们看到显示标题的那个

       Label的ID为Label1,则在Page_Load事件中增加以下代码:

      protected void Page_Load(object sender, EventArgs e)
     { 
            if (!IsPostBack) 
                   ((Label)Master.FindControl("Label1")).Text = "标题被修改了!";
      }

2、是服务器控件或者凡是runat=server的控件,其ClientID在页面输出后,都跟在设计时不一样了。例如有个

      <input type="text" id="txtName" runat="server" /> 
      但输出后,却变成了 
      <input type="text" id="ctl00_Main_txtName" /> 
      如果你原本在javascript里如下引用:document.getElementById("txtName");现在多半找不到了。可以沿用ASP的做法: 
      document.getElementById("<%=txtName.ClientID%>");

3、内容页要访问母版页上的控件不象在同一页上那么方便。 需要用Page.Master.FindControl();的方式,例如, 
       TextBox txt = (TextBox)Page.Master.FindControl(“txtName”); 
       假如要访问的控件是用户控件,如果这样写: 
       MyCtrl myctrl = (MyCtrl)Page.Master.FindControl(“MyCtrl1”); 
       多半会编译出错,说缺乏MyCtrl的定义。原因是该控件在母版页上声明:  
       <%@ Register Src="myCtrl.ascx" TagName="myCtrl" TagPrefix="uc1" %> 
       一般情况下在内容页就不用再声明了。但如果要访问它就不同,也要在内容页的头部加上这一句才行。

       如果用户控件类名是Control_myCtrl,ID为MyCtrl,则在内容页用 

      ASP.myCtrl  myCtrl=(ASP.myCtrl)Master.FindContrl("MyCtrls 1")就可以进 行引用了。 

4、要支持在母版页上的控件事件怎么办?
      比如说,我要在内容页支持我自己写的用户控件MyCtrl(在母版页)的OnClick事件该怎么办?总不能将代码写在母版页吧?

      别忘了,事件本质是委托,我们只要在内容页添加对该事件的委托就行了。 
      以前1.1的时候,代码页面有Page_Init事件的代码,可2.0就不知道跑哪去了。幸而自己加上去也有效: 
      protected void Page_Init(object sender, EventArgs e) 
     { 
           MyCtrl myctrl = (MyCtrl)Page.Master.FindControl(“MyCtrl1”); 

           if (myctrl != null) 
                 myCtrl.Click += new MyCtrl.ClickEventHandler(MyCtrl1_Click);
      }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值