从其父页面调用UserControl方法

kar*_*k k 3 c# user-controls parent-child

我有一个这样的方法从其User Control调用Parent Page方法.这个"DisplayMessage"函数只接受一个字符串变量消息并在屏幕上显示它.在用户控件中,我放置了一个文本框和一个按钮.在Button的click事件中,我调用了上面讨论的Parent Page方法,我们使用Reflection并将文本框的值传递给方法,然后调用该方法并在屏幕上显示消息.

父页面:

public void DisplayMessage(string message)
{
   Response.Write(message);
}
Run Code Online (Sandbox Code Playgroud)

用户控制:

protected void btnSend_Click(object sender, EventArgs e)
{
    this.Page.GetType().InvokeMember("DisplayMessage",System.Reflection.BindingFlags.InvokeMethod, null, this.Page, new object[] { txtMessage.Text });
}
Run Code Online (Sandbox Code Playgroud)

这对我来说可以.

现在我需要的是,我必须从其父页面调用UserControl中存在的方法.

请建议我.提前致谢.

mdm*_*mdm 5

无论您将ID=""控件放在页面上设置属性,都可以使用变量名称从页面中引用它.

因此,如果您的页面如下所示:

<my:UserControl runat="server" ID="myControl" />
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

myControl.MyControlMethod()
Run Code Online (Sandbox Code Playgroud)

从父级在用户控件中调用的方法必须是公共的.如果它是私有的或受保护的,则无法从父级调用该方法.

此外,不是通过反射调用页面函数,而是最好使用事件.