【问题标题】:Cause PostBack and Call Event Fired By Server-Side Button (ASP.Net Button)导致服务器端按钮(ASP.Net 按钮)触发的 PostBack 和 Call 事件
【发布时间】:2010-04-13 20:36:04
【问题描述】:

我还有另一个奇怪的需求。我有一个带有动态按钮的 jQuery 对话框(

将被“触发”的按钮:

<asp:Button ID="RenewSubscriptionButton" runat="server" Visible="false" />

带有回发验证的我的隐藏输入:

<input type="hidden" id="RenewSubscriptionPostBackValue" runat="server" />

在我的 page_load 中:

Me.RenewSubscriptionPostBackValue.Value = _
       Me.Parent.Page.ClientScript.GetPostBackEventReference _
      (Me.RenewSubscriptionButton, String.Empty)

AddHandler Me.RenewSubscriptionButton.Click, AddressOf RenewSubscription

在我的 Asp.net 控件中,我有一个调用并评估生成的 __doPostBack 的 js 函数:

$('#mgrSubPanel').dialog('destroy');
// cause postback and have it run the workflow...
eval($("#<%= RenewSubscriptionPostBackValue.ClientID %>").val());

它会导致回发,但不会调用我后面代码中的函数 RenewSubscription。不确定寻址是否失败或什么,但也许你们中的一个人可以看到我的错误并纠正我......

提前谢谢...

【问题讨论】:

  • 在做了更多研究之后,我发现它实际上是在调用按钮的实际点击事件,而不是我处理的函数,所以我可以忍受......

标签: asp.net jquery postback addressing


【解决方案1】:

当您将此 PostBackEventReference 脚本添加到简单的“onlick”时会发生什么?这通常是我使用它的方式......你在这里的语法让我迷惑了一分钟。 :| (虽然我不太习惯 jQuery)

另外,当你说“动态按钮”时,你到底是什么意思?

【讨论】:

    【解决方案2】:

    你可以通过jQuery点击按钮来简化代码,就像这样:

    $('#mgrSubPanel').dialog('destroy');
    $("#<%=RenewSubscriptionButton.ClientID %>").click();
    

    这就像用户直接单击按钮一样,不需要额外的&lt;input&gt; 或GetPostBackEventReference 代码,只需保留按钮本身的处理程序(AddHandler Me...)就可以了。

    【讨论】:

      猜你喜欢
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 2016-08-02
      • 2013-08-09
      相关资源
      最近更新 更多