、这里的声明指示符中多了一项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;
内容页和母板页互访
最新推荐文章于 2021-06-03 15:10:30 发布