一直困扰我好久的 问题今天终于得到了答案
1:用户控件之间方法的调用
准备工作:
先放两个用户控件one 和two 到页面Default.aspx 上
在one中加上一个textbox and button 在two中写一方法
如下:
//简单的返回值 public string chen() { return "woshicc"; }
在one中调用事件
如下:
/// <summary> /// 点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button1_Click(object sender, EventArgs e) { Type t = Parent.Page.FindControl("one1").GetType();//得到类型是usercontrol System.Web.UI.UserControl uc =(System.Web.UI.UserControl)Parent.Page.FindControl("one1"); System.Reflection.MethodInfo mi = t.GetMethod("chen"); string returnvalue= mi.Invoke(uc, new object[0]).ToString(); this.TextBox1.Text = returnvalue; }
这是用到反射的技术找到页面中[chen]这个方法 再用反射调用这个方法就行了....
当然如果可以调用用户控件中的方法的话 也可以调用到一般页面上的方法
哈哈 试试看:
同样的方法在Default .cs文件中写上一个需要传递参数的方法;
如下:
//这个方法比上一个方法不同这个方法要传递参数 public string Changer(int p, string name) { return "我的名字叫" + name + "我的年龄是" + p; }
要调用这个方法就必须知道怎样用反射调用有参数的方法;
先卖个关子
在调用的one页面上写上这样的代码
如下: protected void Button1_Click(object sender, EventArgs e) { //调用页面中的一个方法 Type t = Parent.Page.GetType(); System.Web.UI.Page ct = (System.Web.UI.Page)Parent.Page; //System.Reflection.MethodInfo mi = t.GetMethod("chen"); System.Reflection.MethodInfo mi = t.GetMethod("Changer"); object [] o=new object[2]; o[0] = 21; o[1] = "张三"; string returnvalue = mi.Invoke(ct, o).ToString(); this.TextBox1.Text = returnvalue; }
在代码 object [] o=new object[2];
o[0] = 21;
o[1] = "张三";
string returnvalue = mi.Invoke(ct, o).ToString(); 就是调用有参数的反射的方法.....
ASP.NET用户控件间方法调用
本文介绍如何在ASP.NET中实现用户控件之间的方法调用,包括无参和带参方法的调用方式,并通过反射技术来实现跨控件的方法交互。
193

被折叠的 条评论
为什么被折叠?



