从托管网页访问用户控件的组成控件

时间:2009-11-25 21:32:20

标签: asp.net user-controls


我已经读过用户控件的组成控件只能由用户控件访问,因此托管此用户控件的网页无法接收事件,调用方法或设置这些包含控件的属性。

但我不确定上述说法是否属实,因为我能够访问(来自托管网页)ClickButton.Click事件(假设WebUserControl1包含ClickButton控件):

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
         Button ClickButton = (Button)WebUserControl1.Controls[0];
         ClickButton.Click += someClickHandler;
    }


感谢名单

2 个答案:

答案 0 :(得分:1)

您可以公开公开用户控件的属性(即设置),控件和事件,这意味着您不必在usercontrol中找到控件。

答案 1 :(得分:1)

整个页面是一个控件树。无论该控件的父级是什么,您都可以“浏览”此树。例如,从用户控件内部,您可以转到父级,可以是另一个控件,然后是页面,然后是主页,依此类推。

所以是的,你是对的,它不是隐藏的,你不能访问它,但它也没有发布。以类似的方式使用反射,你可以调用私有方法,否则你不能。使用某些工具,您可以访问和更改已编译的代码;所以没有什么事情真的遥不可及。

这些边界被设置并用于最小化复杂性,而不是作为无法跨越的绝对墙。