【问题标题】:ImageButton in UpdatePanel causes full postback in FirefoxUpdatePanel 中的 ImageButton 导致 Firefox 中的完整回发
【发布时间】:2009-07-20 21:26:45
【问题描述】:

我有一个带有图像按钮的更新面板:

<asp:ImageButton ID="btnChangeMedium" OnClick="Change_Click" runat="server" />

当页面加载时,基于一些逻辑,我在后面的代码中设置了onclick属性。

btnChangeMedium.Attributes.Add("onclick", "ChangeMedium();");

在 IE 中工作得更好。在 FF 中,imagebutton 会导致回发!通过反复试验和搜索网络,我发现罪魁祸首是 onclick。一篇博客文章建议,如果设置了 OnClientClick,则不应发生回发,因此我将 imagebutton 更改为:

    <asp:ImageButton ID="btnChangeMedium" OnClick="Change_Click" runat="server"
 OnClientClick="#"/>

我能够让它不对图像按钮单击进行回发,但不幸的是,它并没有完全解决我的问题。现在呈现的 HTML 是:

    <input type="image" id="ctl00_WorkSpaceContent_ctlParent_btnChangeMedium"
src="../../images/sec.gif" onclick="#;ChangeMedium();"/>

所以,ChangeMedium() 函数永远不会被调用。这个问题有什么解决方法吗?

非常感谢任何帮助

谢谢!

【问题讨论】:

  • 您是否为更新面板定义了任何触发器?

标签: .net asp.net firefox updatepanel


【解决方案1】:

试试这个:

 <asp:ImageButton ID="btnChangeMedium" OnClick="Change_Click" runat="server"
 OnClientClick="javascript:void(0);ChangeMedium();"/>

【讨论】:

    【解决方案2】:

    你应该做的是删除 OnClientClick 并输入以下内容:

    btnChangeMedium.Attributes.Add("onclick", "ChangeMedium();return false;");
    

    【讨论】:

    • 如果我删除 OnClientClick,在 FF 中,即使 imagebutton 在 UpdatePanel 内,也会有完整的回发(这是我原来的问题)
    • 我必须查看我自己的代码。完全删除 Attributes.Add。只需输入 OnclientClick="ChangeMedium();return false;"。
    • OnClick上分配的JS只在服务端确定。 ChangeMedium() 就是一个例子。它可以是任何基于业务逻辑确定的 JS 代码,不幸的是,我无法在 HTML 中设置它:(
    • 没问题。只需创建一个确定 JavaScript 的函数:注意我使用的单引号。在您的代码中创建一个函数,如下所示: public string SomeFunction() { ... 确定出现的函数} 瞧。您可能需要将任何参数传递给函数以确定它们获取的 JavaScript。
    • 不幸的是,这也不起作用。删除 OnClientClick="#" 后,单击 imagebutton 时我开始收到回发
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2015-07-21
    • 2010-10-23
    • 2012-05-24
    相关资源
    最近更新 更多