asp:Button - onclick 事件在不同的代码隐藏上触发代码?

asp:Button - onclick event fires code on a different code-behind?

我正在自学使用 site.master 页面,其中嵌入了使用 ContentPlaceHolderID 对象的子网络表单。我正在弄清楚,但我有一个问题;是否可以在 site.master 页面上放置一个按钮来触发子表单代码隐藏页面上的代码?如果我能做到这一点,那将真正简化我想要完成的工作。

我尝试 'inherit' 两个代码隐藏,但当然没有用。有办法吗?

是的,有办法做到这一点。您需要将 UseSubmitBehavior 按钮 属性 设置为 false 然后您可以使用 Request.Params.Get("__EVENTTARGET"); 访问导致 post 返回的控件所以代码看起来像这样:

Site.Master 标记中的按钮定义:

<asp:Button ID="MyButton" runat="server" Text="Button" UseSubmitBehavior="false" />

任何继承页面中的代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        // in case you have code to be executed on first load
    }
    else
    {
        string myButtonCtrl = Request.Params.Get("__EVENTTARGET");
        if (myButtonCtrl != null && myButtonCtrl.EndsWith("MyButton"))
        {
            // MyButton has been clicked!
        }    
    }
}