ASP.NET 在 asp:ImageButton 上没有回发

Posted

技术标签:

【中文标题】ASP.NET 在 asp:ImageButton 上没有回发【英文标题】:ASP.NET No postback on asp:ImageButton 【发布时间】:2011-03-18 03:06:52 【问题描述】:

我有一个带有 asp:DropDownList(AutoPostBack="true")的 ASP 页面,因此当用户更改它时,它会重新加载适当的数据。

在该控件下,我有一个 UserControls 列表,其中包括一个 tinymce 编辑器(绑定到一个 asp:TextBox)和一个用于保存数据的 asp:ImageButton。

单击 ImageButton 时,应用程序通过 ajax 将回发数据发送到同一页面(__EVENTARGUMENT、__EVENTTARGET 等...)。为什么它会加载该 ajax 页面,我该如何防止它?我在 ImageButton 上的 OnClick 事件处理程序中更新数据库中的值,所以我需要做的就是完成该 ajax 调用。

有什么想法吗?

【问题讨论】:

您说它正在发出 Ajax 请求:您使用的是 UpdatePanel 吗? 【参考方案1】:

解决方案 1

<asp:ImageButton ID="btn" runat="server" ImageUrl="~/images/yourimage.jpg"
OnClientClick="return false;"  />

或 解决方案2

<asp:ImageButton ID="btn" runat="server" ImageUrl="~/images/yourimage.jpg" 
OnClientClick="yourmethod(); return false;"  />

另外(方案2),你的javascript方法可能是这种形式

<script type="text/javascript">
    function yourmethod() 
    __doPostBack (__EVENTTARGET,__EVENTARGUMENT); //for example __doPostBack ('idValue',3);
    
</script>

在代码后面

protected void Page_Load(object sender, System.EventArgs e)

    if (this.IsPostBack) 
        string eventTarget = this.Request("__EVENTTARGET") == null ? string.Empty : this.Request("__EVENTTARGET");
        string eventArgument = this.Request("__EVENTARGUMENT") == null ? string.Empty : this.Request("__EVENTARGUMENT");
    

【讨论】:

【参考方案2】:

您没有声明您正在使用 UpdatePanel,但这大概是您实现 ajax 调用的方式。如果是这样,您需要添加一个触发器以从 ajax 中排除 imagebutton 事件:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
<Triggers> 
<asp:PostBackTrigger ControlID="ImageButton" />
</Triggers>
<ContentTemplate> </ContentTemplate> 
</asp:UpdatePanel> 

【讨论】:

以上是关于ASP.NET 在 asp:ImageButton 上没有回发的主要内容,如果未能解决你的问题,请参考以下文章

ASP NET 是啥?

在 ASP.NET 中接受信用卡的最佳方式是啥? (在 ASP.NET 和 Authorize.NET 之间)

ASP.NET Core与ASP.NET区别

ASP.NET_基础

ASP.NET和ASP的区别是啥?

ASP.NET 生命周期 – ASP.NET 应用生命周期