首先我们需要明白一个道理,不管一个ASPX页面里面装了多少个ASCX,始终还是要生成一个页面的代码的,所以毫无疑问,我觉得在解决这个问题之前我就已经确定这个问题是可解的。直接贴代码了,首先是用户控件调用父页面的方法:
//获得父页面 Page p = this.Parent.Page; Type pageType = p.GetType(); //父页面的方法名 MethodInfo mi = pageType.GetMethod("Loading"); //执行 mi.Invoke(p, new object[] { "参数1","参数2" });
用户控件与用户控件之间调用:
//获得父页面 Page p = this.Parent.Page; //获得父页面的子控件 UserControl uc = p.FindControl("tj_ReceiptList2") as UserControl; Type pageType = uc.GetType(); //父类方法名 MethodInfo mi = pageType.GetMethod("Loading"); //参数 mi.Invoke(uc, new object[] { "参数1", "参数2" });
用户控件与用户控件之间设置属性:
//获得父页面 Page p = this.Parent.Page; //获得父页面的子控件 UserControl uc = p.FindControl("aabb1") as UserControl; Type pageType = uc.GetType(); //父类方法名 PropertyInfo mi = pageType.GetProperty("属性名称"); //mi.Invoke(uc, new object[] {}); mi.SetValue(uc,属性值,null);
子控件向父级控件设置父级属性值
Page p = this.Parent.Page; UserControl uc = (UserControl)p.FindControl("Template");//Template为控件ID Type pageType = uc.GetType();//父类方法名 System.Reflection.PropertyInfo mi = pageType.GetProperty("zdyContent");//zdyContent为属性 mi.SetValue(uc,"赋值的值",null);