2009-04-15 42 views
15

我有一个ASP.NET按钮,但最近,我用一个标准的HTML按钮替换它...我需要做的是回发到ASP.NET页面并确保调用一个方法。与jQuery的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警告,我最近换到一个jQuery UI模式对话框,但它不等待我回答这个问题..立即回发事件...所以我决定改为一个标准的HTML按钮...但我需要回发到ASP.NET页面并调用类似的方法。

如果我只是回传也不会调用清理

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

如果你从谷歌遇到这个问题,请查看我的答案(没有任何贴子适用于我)。 – 2010-12-20 04:48:41

回答

6

尽管您可以使用JQuery执行回发,但最好调用一个我们b方法(网页中的网络服务)。该调用也可能更快,因为您没有发布整个页面ViewState。

+4

这将工作,但有一种使用回发来完成此操作的方法,因此您不必声明Web服务方法。 – 2009-06-21 02:02:35

+0

FWIW,Chrome在该URL上显示恶意软件警告 – dlchambers 2016-08-03 03:51:29

4

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

0

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

E.g. <input type="image" id="test" onclick="doWhatever();return false;" />

15

看看有没有帮助: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 
} 

然后,你可以调用这个锚的onclick功能与此javascript:

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

或者这是另一种选择: http://blogs.microsoft.co.il/blogs/gilf/archive/2008/10/04/asp-net-ajax-pagemethods.aspx – David 2009-04-15 15:08:44

0

我碰到过这篇文章,通过谷歌,所以我怀疑其他人也会。我尝试了这里没有用的方法。我将解释我的解决方案,但首先概述我正在尝试做什么。

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

这基本上与为asp.net控件分配点击功能完全一样,除了不是点击按钮,我是在告诉javascript执行它。 atest将是我分配给asp.net控件的ID。
注意:<%=myclientid.ClientID %>不会在这里工作。