母版页与内容页之间互相调用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if (s == "ASP.default17_aspx") //根据不同的内容页面类型执行不同的操作
{
((TextBox)this.ContentPlaceHolder1.FindControl("TextBox2")).Text = "MastPage";
}
else if (s == "ASP.default18_aspx")
{
((TextBox)this.ContentPlaceHolder1.FindControl("TextBox2")).Text = "Hello MastPage";
}
object[] os = new object[1]; //建造输入参数
os[0] = txtMaster.Text;
Holder1.Page, os); //调用SetValue方法
七、在有多个内容页面使用母版面的情况下,在母版页中根据不同的内容页面实现不同的操作
假设母版页中有下面的属性和方法:
public string TextValue
{
get
{
return this.txtMaster.Text;
}
set
{
this.txtMaster.Text = value;
}
}
public void show(string str)
{
txtMaster.Text = str;
txt.Text = this.txtContent1.Text;
四、在内容页面中编写代码访问母版页中的属性和方法:
仍可能通过Master对象进行访问,只不过在这里要把Master对象转换成具体的母版页类型,然后再调用母版页中的属性和方不法。
这里要说明的是:母版页中要被内容页面调用的属性和方法必须是Public修改的。否则无法调到。
[转载]母版页与内容页之间(二)(2011-07-04 15:23:01)
学习了!谢谢!
原文地址:母版页与内容页之间(二)作者:这里有我
一、在母版页中编写后台代码,访问母版页中的控件:
与普通的aspx页面一样,双击按钮即可编写母版页中的代码
二、在内空页面中编写后台代码,访问内容页面中的控件:
与普通的aspx页面一样,双击按钮即可编写母版页中的代码
在母版页中可以通过在ContentPlaceHolder控件中调用FindControl方法来取得控件,然后对控件进行操作。
((TextBox)this.ContentPlaceHolder1.FindControl("txtContent1")).Text = this.txtMaster.Text;
六、在母版页中访问内容页面中的方法和属性:
在母版页中调用子页面中的属性和方法有点难度,因为我们无法像上一步中那样通过FindControl来找到方法和属性。于是我们想到在母版面的声明指示符中加入下面的代码:
<%@ Reference Page="~/MasterPage/Show1.aspx" %>
}
在内容页面中可以通过下代的代码来实现对母版页中方法的调用:
((MasterPage_MP)Master).show(this.txtContent1.Text);
((MasterPage_MP)Master).TextValue = this.txtContent1.Text;
五、在母版页中访问内容页面的控件:
三、在内容页面中编写代码访问母版页中的控件:
在内容页面中有个Master对象,它是MasterPage类型,它代表当前内容页面的母版页。通过这个对象的FindControl方法,我们可以找到母版面中的控件,这样就可以在内容页面中操作母版页中的控件了。
TextBox txt = (TextBox)((MasterPage)Master).FindControl("txtMaster");
在母版页中可以加入多个不同的内容页面,但在设计期间,我们无法知道当前运行的是哪个内容页面。所以只能通过分支判断当前运行的是哪个子页面,来执行不同的操作。这里也用到了反射的知识。
代码如下:
string s = this.ContentPlaceHolder1.Page.GetType().ToString(); //取出内容页面的类型名称
在运行的时候回发现有错误,错误的内容是“无法实现循环引用”。这是因为默认在子页面中引用了母版页,你也就不能再在母版页中引用子页面了。我在网上也没找到更好的解决方法,但这使我们想起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()方法
{
((TextBox)this.ContentPlaceHolder1.FindControl("TextBox2")).Text = "MastPage";
}
else if (s == "ASP.default18_aspx")
{
((TextBox)this.ContentPlaceHolder1.FindControl("TextBox2")).Text = "Hello MastPage";
}
object[] os = new object[1]; //建造输入参数
os[0] = txtMaster.Text;
Holder1.Page, os); //调用SetValue方法
七、在有多个内容页面使用母版面的情况下,在母版页中根据不同的内容页面实现不同的操作
假设母版页中有下面的属性和方法:
public string TextValue
{
get
{
return this.txtMaster.Text;
}
set
{
this.txtMaster.Text = value;
}
}
public void show(string str)
{
txtMaster.Text = str;
txt.Text = this.txtContent1.Text;
四、在内容页面中编写代码访问母版页中的属性和方法:
仍可能通过Master对象进行访问,只不过在这里要把Master对象转换成具体的母版页类型,然后再调用母版页中的属性和方不法。
这里要说明的是:母版页中要被内容页面调用的属性和方法必须是Public修改的。否则无法调到。
[转载]母版页与内容页之间(二)(2011-07-04 15:23:01)
学习了!谢谢!
原文地址:母版页与内容页之间(二)作者:这里有我
一、在母版页中编写后台代码,访问母版页中的控件:
与普通的aspx页面一样,双击按钮即可编写母版页中的代码
二、在内空页面中编写后台代码,访问内容页面中的控件:
与普通的aspx页面一样,双击按钮即可编写母版页中的代码
在母版页中可以通过在ContentPlaceHolder控件中调用FindControl方法来取得控件,然后对控件进行操作。
((TextBox)this.ContentPlaceHolder1.FindControl("txtContent1")).Text = this.txtMaster.Text;
六、在母版页中访问内容页面中的方法和属性:
在母版页中调用子页面中的属性和方法有点难度,因为我们无法像上一步中那样通过FindControl来找到方法和属性。于是我们想到在母版面的声明指示符中加入下面的代码:
<%@ Reference Page="~/MasterPage/Show1.aspx" %>
}
在内容页面中可以通过下代的代码来实现对母版页中方法的调用:
((MasterPage_MP)Master).show(this.txtContent1.Text);
((MasterPage_MP)Master).TextValue = this.txtContent1.Text;
五、在母版页中访问内容页面的控件:
三、在内容页面中编写代码访问母版页中的控件:
在内容页面中有个Master对象,它是MasterPage类型,它代表当前内容页面的母版页。通过这个对象的FindControl方法,我们可以找到母版面中的控件,这样就可以在内容页面中操作母版页中的控件了。
TextBox txt = (TextBox)((MasterPage)Master).FindControl("txtMaster");
在母版页中可以加入多个不同的内容页面,但在设计期间,我们无法知道当前运行的是哪个内容页面。所以只能通过分支判断当前运行的是哪个子页面,来执行不同的操作。这里也用到了反射的知识。
代码如下:
string s = this.ContentPlaceHolder1.Page.GetType().ToString(); //取出内容页面的类型名称
在运行的时候回发现有错误,错误的内容是“无法实现循环引用”。这是因为默认在子页面中引用了母版页,你也就不能再在母版页中引用子页面了。我在网上也没找到更好的解决方法,但这使我们想起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()方法