Asp.Net - 用户控件按钮的OnClick事件未触发

3

我有一个用户控件,只有在特定的情况下加载,例如当用户单击页面上的按钮时,执行以下操作:

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
}

当按钮被点击时,好像无法执行“do something”部分的操作。我认为这可能与控件通常不随页面一起加载有关,但我不太确定该怎么办。


1
请更好地描述您如何将按钮添加到页面上。 - AndrewK
MyControl ctl = (MyControl)LoadControl(controlPath); 这是在页面上的一个按钮被点击后运行的方法中发生的。this.MyFormControl.Add(ctl); - maembe
btnSave_Click在您添加UC的页面或用户控件的代码后台中存在吗? - Garrison Neely
在用户控件的代码后台 - maembe
3个回答

4

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

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

编辑

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


我相信这就是问题所在,但我不确定该怎么解决。在PostBack之后动态加载控件似乎不切实际。有没有好的解决方法? - maembe
很遗憾,每次请求都必须创建动态控件。 - Mike
+1 在“(也许它在 if (!IsPostback) 块中)”上。 - user1132959

0

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


0
你的页面启用了Viewstate吗?
如果你明确地关闭了它,那么每次回发时你都需要重新添加你的用户控件,因为页面不会自动重新添加它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接