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 上没有回发的主要内容,如果未能解决你的问题,请参考以下文章