【问题标题】:ASP.NET postback with jQuery?使用 jQuery 的 ASP.NET 回发?
【发布时间】:2009-04-15 12:06:52
【问题描述】:

我有一个 ASP.NET 按钮,但最近,我将其替换为标准 HTML 按钮......我需要做的是回发到 ASP.NET 页面并确保调用了一个方法。

上一个按钮是一个 ASP.NET 按钮,所以我有这个事件:

Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
    UtilTMP.DisposeObjects()
    Server.Transfer("~\Forms\test.aspx", True)
End 

但是我使用的是带有 JavaScript ALERT 的按钮,并且我最近更改为 jQuery UI 模态对话框,但它没有等我回答问题..回发立即发生...所以我决定更改为一个标准的 HTML 按钮……但我需要回发到 ASP.NET 页面并调用类似的方法。

如果我只是回发它不会调用清理

Protected Sub Cleanup()
    UtilTMP.DisposeObjects()
    Server.Transfer("~\Forms\test.aspx", True)
End 

【问题讨论】:

  • 如果你从谷歌看到这个,请查看我的答案。(所有帖子都不适合我)。

标签: asp.net jquery user-interface postback modal-dialog


【解决方案1】:

看看这是否有帮助:http://www.codeproject.com/KB/aspnet/sample.aspx

基本上,您声明一个虚拟锚标记:

<a id="anchorId" runat="server" onclick="return true" onserverclick="foo"></a> 

在你后面的代码中,你需要声明一个 foo 方法:

protected void foo(object sender, EventArgs e)
{
    // Do something here
}

然后你可以用这个javascript调用这个锚的onclick函数:

document.getElementById('anchorId').click()

【讨论】:

【解决方案2】:

虽然您可以使用 JQuery 进行回发,但调用 Web 方法(页面中的 Web 服务)可能会更好。调用也可能更快,因为您没有发布整个页面 ViewState。

【讨论】:

  • 这会起作用,但有一种方法可以通过回发来做到这一点,因此您不必声明 Web 服务方法。
  • 该链接不再有效。 Chrome 没有让我通过,因为该网站显然包含恶意软件
  • 我认为 David Ward 关闭了 encosia.com。
【解决方案3】:

如果您想在回发时触发事件处理程序,您需要将 __EVENTTARGET 隐藏字段设置为适当的值。但是,我会以不同的方式来做。将 ASP 按钮放在您的模式对话框中,并与它们相关联的事件处理程序。让弹出对话框的点击处理程序返回 false (这样回发不会从该按钮点击发生)。这样,您的表单就会从 ASP 按钮回传,并且会自动调用处理程序,包括客户端隐藏字段设置。

【讨论】:

    【解决方案4】:

    看看这篇文章

    http://www.deviantpoint.com/post/2009/03/12/Using-jQuery-UI-Dialogs-for-confirmation-windows.aspx

    基本思想是将回调函数放在隐藏字段中,然后在 $(this).dialog('close'); 上运行 eval

    我用它让它在 Gridview 中工作,所以如果你想知道如何做到这一点,请发表评论。

    【讨论】:

      【解决方案5】:

      我是通过谷歌看到这篇文章的,所以我怀疑其他人也会。我在这里尝试了对我不起作用的方法。我将解释我的解决方案,但首先概述我正在尝试做的事情。

      我有一个使用 jQuery ajax 将数据发布到我的 web 服务的表单,这反过来又更新了我的数据库。我有一个图像上传表单,出于安全原因,您无法在 ajax 调用中使用完整的文件路径来传递给 web 服务......所以它必须通过常规的 asp.net 回发来完成。所以我的困境是如何做到这两点。我所做的是使用我的 ajax 函数来更新数据库,一旦我从 web 服务获得成功,我会告诉表单回发到代码隐藏中的某个方法,然后重定向到任何地方。 $("#Button1").click(function () { javascript: __doPostBack('ctl00$ContentPlaceHolder1$atest', '') });

      这本质上与将点击功能分配给 asp.net 控件完全相同,只是我告诉 javascript 执行它而不是点击按钮。 atest 将是我分配给 asp.net 控件的 ID。
      注意:&lt;%=myclientid.ClientID %&gt; 在这里不起作用。

      【讨论】:

      • 不起作用,但 起作用。
      【解决方案6】:

      您应该能够通过返回 false 来停止将任何 JS 附加到按钮 onclick 事件的回发,无论它是 WebControl 还是标准 HTML 按钮。

      例如&lt;input type="image" id="test" onclick="doWhatever();return false;" /&gt;

      【讨论】:

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