【问题标题】:Asp.Net - User Control Button OnClick Event Not FiringAsp.Net - 用户控制按钮 OnClick 事件未触发
【发布时间】:2025-11-26 01:15:02
【问题描述】:

我有一个仅在某些情况下加载的用户控件,例如,当用户单击页面上的按钮时,会发生以下情况:

MyControl ctl = (MyControl)LoadControl(controlPath);
this.MyFormControl.Add(ctl);

加载的用户控件有一个表单和一个提交按钮,还有一个我想在点击时运行的方法:

<asp:Button runat="server" ID="SaveButton" Text="Save" OnClick="btnSave_Click" />

在用户控件的代码隐藏中:

protected void btnSave_Click(object sender, EventArgs e)
{
    // Do something
}

单击按钮时,我似乎无法让做某事部分发生。我认为这可能与控件未正常加载页面有关,但我不确定该怎么做。

【问题讨论】:

  • 请更好地描述您如何将按钮添加到页面。
  • MyControl ctl = (MyControl)LoadControl(controlPath); this.MyFormControl.Add(ctl);这发生在单击页面上的按钮后运行的方法的一部分。
  • btnSave_Click 是否存在于用户控件或您要添加 UC 的页面的代码隐藏中?
  • 在用户控件的代码隐藏中

标签: asp.net user-controls


【解决方案1】:

这在你的页面指令中吗?:

<%@ Page Language="C#" AutoEventWireup="true"

编辑

它是动态创建/加载的吗?每个请求都需要创建动态控件(可能在 if (!IsPostback) 块中)?

【讨论】:

  • 我很确定这是问题所在,但我不确定该怎么做。在回发之后动态加载控件似乎不切实际。有什么好办法吗?
  • 遗憾的是,不,您必须为每个请求创建动态控件。
  • +1 在“(也许它在 if (!IsPostback) 块中)”
【解决方案2】:

您的页面上是否启用了 Viewstate?

如果您专门将其关闭,则需要在每个帖子上重新添加您的用户控件,因为页面不会自动重新添加它。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。我在添加控件的页面上有 viewstate="false"。 (在 aspx 页面上)

    【讨论】: