16

我有一个 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 
4

6 回答 6

18

看看这是否有帮助: 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()
于 2009-04-15T13:31:41.667 回答
6

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

于 2009-04-15T18:16:14.137 回答
4

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

于 2009-04-15T12:16:58.790 回答
4

看看这篇文章

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

基本思想是将回调函数放在隐藏字段中并在$(this).dialog('close');

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

于 2009-06-21T02:01:58.840 回答
1

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

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

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

于 2010-12-20T04:45:24.503 回答
0

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

例如<input type="image" id="test" onclick="doWhatever();return false;" />

于 2009-04-15T12:19:37.177 回答