ASP.NET没有关于asp的回发:ImageButton

时间:2010-07-19 20:46:50

标签: asp.net postback imagebutton autopostback

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

解决方案1 ​​

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

OR 解决方案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");
    }
}