使用jQuery进行ASP.NET回发?

使用jQuery进行ASP.NET回发?,asp.net,jquery,user-interface,postback,modal-dialog,Asp.net,Jquery,User Interface,Postback,Modal Dialog,我有一个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", T

我有一个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警报的按钮,最近我改成了一个jQueryUI模式对话框,但它并没有等我回答这个问题。。回帖马上就发生了。。。所以我决定改成一个标准的HTML按钮。。。但是我需要回发到ASP.NET页面并调用类似的方法

如果我只是回发,它不会叫清理

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

如果要在回发时触发事件处理程序,则需要将_EVENTTARGET hidden字段设置为适当的值。不过,我会用另一种方式。将ASP按钮放在模式对话框中,使事件处理程序与之关联。让弹出对话框的点击处理程序返回false(这样就不会从该按钮点击中发生回发)。通过这种方式,表单将从ASP按钮发回,处理程序(包括客户端隐藏字段设置)将自动调用。

无论button onclick事件附加了什么JS,您都应该能够通过返回false来停止发回,无论它是WebControl还是standar HTML按钮

例如,查看这是否有帮助:

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

<a id="anchorId" runat="server" onclick="return true" onserverclick="foo"></a> 
然后,您可以使用以下javascript调用此锚点的onclick函数:

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

虽然可以使用JQuery进行回发,但最好调用web方法(页面中的web服务)。由于您没有发布整个页面的ViewState,因此调用速度可能会更快。

请查看本文

基本思想是将回调函数放在一个隐藏字段中,并对
$(this).dialog('close')运行eval


我用它让它在Gridview中工作,所以如果你想知道如何做,请留下评论。

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

我有一个表单,它使用jQuery ajax将数据发布到我的web服务中,从而更新我的数据库。我有一个图像上传表单,出于安全原因,您无法获取在ajax调用中使用的完整文件路径,以传递给Web服务。。。因此,它必须通过常规asp.net回发来完成。所以我的困境是如何做到这两个。我所做的是使用ajax函数来更新数据库,一旦我从webservice成功返回,我会告诉表单在codebehind中对某个方法进行回发,然后重定向到任何地方。
$(“#按钮1”)。单击(函数(){
javascript:_doPostBack('ctl00$ContentPlaceHolder1$atest','')
});

这本质上与将click函数分配给asp.net控件完全相同,只是我没有单击按钮,而是告诉javascript执行它。
atest
将是我分配给asp.net控件的ID。

注意:
在这里不起作用。

或者这是另一个选项:这会起作用,但有一种方法可以通过回发来实现,因此您不必声明web服务方法。链接不再起作用。Chrome没有让我通过,因为该网站显然包含Malware。我认为David Ward关闭了encosia.com。如果你在谷歌上看到了这一点,请查看我的答案。(所有帖子对我都不起作用)。不管用,但管用。
document.getElementById('anchorId').click()