ASP.Net - 在服务器端触发按钮的事件而不会导致回发

时间:2011-10-20 07:45:04

标签: asp.net events button postback linkbutton

我有一个问题,我见过其他人过去也有,但我找不到任何解决方案。

我想在页面上使用ASP.Net链接按钮(甚至是按钮),一旦点击它,它在服务器端的事件代码就会触发但是我不希望它导致回发。

现在我知道这些控件旨在通过设计导致回发,并且您可以通过添加以下内容来禁用此功能:“return false;”到Onclientclick参数(或者Attributes.Add(“onclick”,返回false“);)但是请注意,这不是我要问的。我认为我的问题基本上是:我们如何在服务器上调用方法 - 从客户端那边没有引起回发?这甚至可能吗?(我可以在问题本身中感知一些逻辑问题,但其他几个人也有同样的问题)。

对于那些有创造力的人,我最近遇到过: http://ryanfarley.com/blog/archive/2005/03/11/1886.aspx

解释了如何识别导致回发的控件。也许这有助于通过某种方式禁用回发效果然后解雇事件?如果是这样,你怎么能避免页面刷新效果(我在Page_Load中没有任何东西,但页面仍然“刷新”或重新渲染。我不想这样,这可以避免吗?我还没有想出办法。

感谢您的时间。

5 个答案:

答案 0 :(得分:3)

要调用服务器端事件,您必须将数据发送到服务器,以便它知道该怎么做。停止回发会停止发送的数据,因此服务器永远不会知道客户端上发生了什么。

如果您只是想避免页面参考,那么最好的方法就是使用AJAX。在ASP.NET Web表单中,最简单的方法是将内容包装在UpdatePanel中。另一种方法是研究使用PageMethods和客户端脚本(实质上是从客户端脚本调用Web服务,然后充当服务器的代理)。

答案 1 :(得分:1)

为什么不只是编写由按钮触发的javascript来执行您需要的客户端修改。如果在事件期间需要来自服务器的任何动态数据,则可以使用服务器中的ajax获取该数据。

答案 2 :(得分:0)

据我所知,这是不可能的。

答案 3 :(得分:0)

您可以通过将按钮放在UpdatePanel中来触发部分播放(因此页面不会重新加载)。

答案 4 :(得分:0)

你可以在这做两件事。 - 使用更新面板并在PageLoad中为IsPostBack添加一个检查。 - 你可以做的另一件事是使用jquery进行ajax调用并指定一个可以在该按钮上执行的方法,在链接之后应该可以帮助你。 http://www.seoasp.net/post/2008/07/16/jQuery-To-Call-ASPNET-Page-Methods-and-Web-Services.aspx