【问题标题】:__doPostBack() is causing post back but not calling button click event in aspx page__doPostBack() 导致回发但未在 aspx 页面中调用按钮单击事件
【发布时间】:2013-08-26 00:55:56
【问题描述】:

我正在使用一个带有按钮的 aspx 页面。

 <asp:Button ID="savebtn" runat="server" OnClick="savebtn_Click" Style="display: none" />

有两种方法可以导致回发,如下面的代码所示。

 $(document).ready(function () {
               var id = document.getElementById('<%= savebtn.ClientID %>');
       //Cause post back & calls page load but not savebtn_Click event
            __doPostBack('<%= savebtn.ClientID  %>', 'OnClick');

    });

    $(document).ready(function () {
                     var id = document.getElementById('<%= savebtn.ClientID %>');
           //Cuase postback & calls both PageLoad and savebtn_Click events.
           //If I use method, There is no way to know which control caused postback
            id.click();

    });

当我使用__doPostBack时,它调用页面加载事件而不是btn点击事件。

有没有办法使用 __doPostBack 来触发页面加载以及 savebtn_Click 事件。

如果我使用 id.click();如上所示,我可以调用 savebtn_Click 但它没有告诉我是哪个控件导致回发。

【问题讨论】:

  • 您为什么要尝试使用客户端进行回发?

标签: javascript c# jquery asp.net asp.net-mvc


【解决方案1】:

您是否尝试过使用 UniqueID 而不是 ClientID

__doPostBack('<%= savebtn.UniqueID %>', "");

还可以在 dopostback 上查看 quick tutorial

【讨论】:

  • 这行得通,但如果有人能解释它是如何工作的,那就太好了。
  • UniqueID 从 name 属性返回值(使用 $ 作为分隔符),ClientID 从 id 属性返回值(使用 _ 作为分隔符)。对其工作原理的解释:“UniqueID 在回发中也起着重要作用。支持回发的服务器控件的 UniqueID 属性为 __EVENTTARGET 隐藏字段提供数据。然后,ASP.NET 运行时使用 __EVENTTARGET 字段来查找控件它触发了回发,然后调用了它的 RaisePostBackEvent 方法。” telerik.com/blogs/…
【解决方案2】:

我用这段代码解决了这个问题:

  document.all('Button1').click();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多