首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用ASP.NET AJAX / ICallbackEventHandler跟踪状态

利用ASP.NET AJAX / ICallbackEventHandler跟踪状态
EN

Stack Overflow用户
提问于 2008-08-05 13:52:12
回答 5查看 3.2K关注 0票数 13

我在维护ASP.NET AJAX页面中的状态时遇到了问题。简短版本:在异步回调之后,我需要一些方法来更新页面ViewState,以反映服务器在异步调用期间所做的任何状态更改。

这似乎是一个常见的问题,但我将描述我的场景,以帮助解释:

我有一个类似网格的控件,它具有一些JavaScript增强功能,即能够拖放列和行。当将列或行放到新位置时,会调用AJAX方法通知控件服务器端,并触发相应的服务器端事件("OnColumnMoved“或"OnRowMoved")。

默认情况下,ASP.NET AJAX调用将整个页面作为请求发送。这样,页面就会经过一个完整的生命周期,viewstate被持久化,并且控件的状态在调用RaiseCallbackEvent方法之前被恢复。

但是,由于AJAX调用不更新页面,所以ViewState反映了控件的原始状态,即使在移动了列或行之后也是如此。因此,当第二次发生客户端操作时,AJAX请求将转到服务器,页面和控件将再次生成,以反映控件的第一种状态,而不是第一列或行被移动后的状态。

这个问题涉及到许多方面。例如,如果我们有一个客户端/AJAX操作来向网格中添加一个新项,然后拖动一行,那么网格将被构建为服务器端,其项比客户端少一个。

最后&对于我的具体示例来说,最重要的是,我们正在处理的实际数据源对象存储在页面ViewState中。这是一个允许保留被操纵数据的有状态副本的设计决定,这些数据可以在多次操作后提交到DB,或者如果用户退出,则被丢弃。这是很难改变的。

因此,在激发AJAX方法之后,我同样需要一种在回调中更新页面ViewState的方法。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-08-07 16:19:34

如果您已经对ViewState进行了调整,那么最好使用UpdatePanel。它的部分回发自动更新页面的ViewState。

票数 2
EN

Stack Overflow用户

发布于 2008-08-05 14:25:19

查看这篇博文:调整ICallbackEventHandler和视图状态。作者似乎是在讨论你们正在经历的情况:

因此,在使用ICallbackEventHandler时,需要克服两个障碍,才能更新回调的状态管理。首先是只读视图状态的问题.另一个是在触发回调之前,实际注册用户对页面所做的更改。

有关如何解决这一问题的建议,请参见博客帖子。还可以查看这个论坛帖子,它也讨论了同样的问题。

票数 1
EN

Stack Overflow用户

发布于 2008-08-05 14:54:23

实际上,我发现了您提供的这两个链接,但正如前面提到的,它们只是简单地描述问题,而不是解决问题。这篇博客文章的作者建议通过使用不同的ViewState提供者来解决问题,但不幸的是,在这种情况下,这是不可能的.我真的需要把ViewState的细节放在一边,只需要直接连接到正在做的事情上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档