多个更新面板和多个回发会导致整个页面刷新

时间:2010-04-14 17:49:33

标签: asp.net updatepanel postback

我正在使用same problem I had yesterday ... Aristos提供的解决方案帮助解决了问题,但我还有其他地方发送updatepanel回发导致同样的问题。

当更新面板更新并且在有机会呈现第一次更新之前调用另一个更新请求时,整个页面将刷新,而不仅仅是更新面板。

我使用fiddler来查看发生了什么,这是发生了什么......如果我在做另一个请求之前等待请求返回,我会得到这个:

  

21443 |的UpdatePanel | dnn_ctr1107_CRM_SalesTool_LeadsUpdatePanel |

但如果我不等,我明白了:

  

66 | pageRedirect || http://mysite.com/salesdashboard.aspx|

previous question中的代码仍然相同,只是我将UpdateMode="Conditional"添加到更新面板。

有什么想法吗?或者是唯一的解决方案,确保任何数量的更新面板(只要它们在同一页面上)的2+更新永远不会发生?

谢谢,
马特

2 个答案:

答案 0 :(得分:0)

也许微软自动ajax无法同时处理2个请求,因为他每次都需要知道什么是帖子,所以可能如果你在等待返回时点击,那么他知道帖子回来了,改变,所以他通过ajax来获得正确的回报。

我可以想到两种方式。一种方法是使用jQuery和ajax自己创建它并避免使用UpdatePanel。

第二种方法是在等待返回时阻止点击,或者建立一个机制来放置请求,一个接一个。

此代码可以帮助您了解何时阻止输入以及何时释放输入或执行您认为的操作。

$(document).ready(function() {
    var prm = Sys.WebForms.PageRequestManager.getInstance();

    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);
});

function InitializeRequest(sender, args) {  
   LastIdCaller = args.get_postBackElement().id;    
}

function EndRequest(sender, args) {
}

答案 1 :(得分:0)

我可能是错的,但如果我是对的,那么如果你使用的是asp.net WebForms,你就不能做多个ajax请求。在asp.net WebForms中,页面上只有一个Form元素。同一页面上的多个ajax请求需要多个表单元素。 Html旨在回发到表单元素内部,处理所述回发的机制是表单,它是容器。只有一个人可以一次回复。因为Asp.Net WebForms每页只有一个表单元素,每页只能执行1个ajax回发。

或者,您可以创建通用ASHX Http处理程序来执行表单逻辑,并使用JQuery Ajax回发到Generic Http Handler。在这种情况下,您可以根据需要一次执行多个这样的操作。

一般情况下,每当我需要提供更改的图像时,我都会使用ASHX处理程序,就像在飞行成像中一样。我也将它们用于大数据输出。例如。 ASHX处理程序返回一个大的JSON转储。我对ASH​​X处理程序执行Ajax回发以获取JSON中的一组数据并将其附加到表等,并在计时器上重复调用ASHX处理程序以获取新数据(例如5分钟计时器)等

如果您提供了更多关于您尝试做什么的背景信息,我可能会为您提供替代解决方案。

编辑:我查看了您链接的其他帖子,我认为ASHX处理程序可以很好地为您服务。您可以设计ASHX处理程序以JSON格式返回搜索数据。您可以在ASHX处理程序中使用Request varaibles,并且可以使用JQuery.Ajax将后期数据发送到ASHX Handler。

您应该可以使用自己的成功函数触发多个请求。然后你需要编写javascript,因为它处理来自ashx处理程序的JSON数据,它可以在完成时与其他请求合并。