C# 如何在updatepanel中调用特定按钮的事件?

C# 如何在updatepanel中调用特定按钮的事件?,c#,asp.net,ajax,events,updatepanel,C#,Asp.net,Ajax,Events,Updatepanel,我有以下情况: 带有以下触发器的updatepanel: <Triggers> <asp:AsyncPostBackTrigger ControlID="lbtn_addApp" EventName="Click" /> <asp:PostBackTrigger ControlID="btn_agree" /> <asp:PostBackTrigger ControlID="btn_disagree" /> </Triggers>

我有以下情况:

带有以下触发器的
updatepanel

<Triggers>
<asp:AsyncPostBackTrigger ControlID="lbtn_addApp" EventName="Click" />
<asp:PostBackTrigger ControlID="btn_agree" />
<asp:PostBackTrigger ControlID="btn_disagree" />
</Triggers>

注意
btn\u在updatepanel中提交

但是当我调用click事件时,它不会使postbak

我如何调用具有回发行为的
btn\u disagree
事件


 </ContentTemplate>
   <Triggers>  
   <asp:AsyncPostBackTrigger ControlID="Submit_But" EventName="click" />  
   </Triggers>  
   </asp:UpdatePanel>

哪里是
btn\u submit

根据您的标记,点击
btn_discoverate
应该会导致标准回复。但是根据你的代码,你没有点击
btn\u disagree
。您正在单击一个名为
btn\u submit
的东西,它没有列在触发器中

如果
btn\u submit
也是
UpdatePanel
的一部分,并且您希望
btn\u submit
也导致回发,则需要为其包含
PostBackTrigger
。否则,它将使用
UpdatePanel
的默认行为并异步调用服务器

另一方面,此代码需要进行一些重构:

protected void btn_submit_Click(object sender, EventArgs e)
{
    btn_disagree_Click(null, null);
}
您应该避免直接调用事件处理程序。它们是用来响应UI事件的。直接调用它们(并传递
null
s等等)会造成相当混乱的体验,只会引起bug和奇怪的行为

这段代码对我意味着,
btn\u不同意\u单击
中有重要的业务逻辑,需要从
btn\u提交\u单击
中使用。该业务逻辑应该重构为另一种方法。然后两个事件处理程序可以简单地调用该方法,而不是试图互相调用


让处理程序只处理UI事件并直接控制业务逻辑。将业务逻辑与UI代码分开。

我不清楚您想做什么。由于是异步的,
UpdatePanel
不会按设计执行回发。如果希望页面执行正常的回发,为什么不使用正常按钮?通过从事件处理程序中调用事件处理程序,您到底想要实现什么?处理程序用于UI事件,不要手动调用它们。相反重新考虑
btn\u disagree\u点击
到它自己的方法中并调用该方法。我有两种状态
asynchronousTrigger
&
PostBackTrigger
,所以我需要一个更新面板,我只想在调用
btn\u disagree\u点击
时执行与
PostBackTrigger
相同的行为我想在调用'btn\u disagree\u Click(null,null);`在
btn\u submit\u中单击
make post back,否则默认行为为
AsyncPostBack
。@只是名称:它不起作用。在您在评论中发布的标记中,您明确告诉代码对
btn\u submit
使用异步行为。当您将同步行为配置为不这样做时,为什么会期望它呢?当您尝试在服务器上手动调用
btn\u disagree\u Click()
时,您无法启动回发,因为您已经在服务器上。没有来自服务器的回发,只有来自客户端的回发,此时客户端不再参与。@just_name:回发发生在客户端,而不是服务器端。客户端需要知道如何回发到服务器,否则它不会回发。您需要显式地配置正在单击的按钮以发回服务器,或者执行您在客户端的
btn\u submit\u单击
中暗示的任何条件逻辑,并根据您的条件手动执行发回(使用JavaScript,这会变得很混乱,因为您将从框架中连接到现有生成的JavaScript)。
protected void btn_submit_Click(object sender, EventArgs e)
{
    btn_disagree_Click(null, null);
}