asp.net - 我可以避免 UpdatePanel 杀死 View 状态吗?

标签 asp.net ajax drop-down-menu checkbox updatepanel

我的选择页面有一个 GridView ,向用户呈现一个数据项列表,他们可以单击这些数据项来“钻取” - 将他们重定向到数据维护页面。

由于列表可能会很长,因此我们在顶部有一系列复选框和下拉列表作为过滤器。

我们刚刚实现了带有 UpdatePanelAnimationExtender 的 UpdatePanel,这样当页面长途返回数据库时,就会弹出一个漂亮的“正在处理...”。

问题是,这似乎破坏了下拉列表和复选框的 View 状态。现在,当他们转到“详细信息页面”并点击“返回”按钮返回“选择”页面时,复选框和下拉列表中的选定值将恢复为其初始默认值。列表仍然填充,但当用户单击数据维护页面时,它们“忘记”了它们所拥有的内容。

我拿出了 UpdatePanel 的 .aspx 代码,并对动画进行了扩展和重新测试,一切都运行良好。因此,显然,UpdatePanel 和/或 AnimationExtender 与 View 状态的配合不太好。

有没有办法阻止 UpdatePanel 的操作,实际上将“.SelectedValue”属性清零?

最佳答案

首先,我将从 UpdatePanel 中删除“过滤”控件。假设这些控件的数据在 Page_Load 上赋值,则每次将筛选器应用于 GridView 时,不需要刷新它们。仅刷新 GridView,因此它可能是 UpdatePanel 中应包含的唯一控件。

每个过滤控件都可以通过在 UpdatePanel 控件的 部分中声明来添加为更新 UpdatePanel 的触发器。或者,如果过滤过程是由“提交”之类的按钮调用的,那么这将是要在该部分中声明的控件。这应该将过滤控件的值保留在浏览器的缓存中。

您也可以尝试Nikhil Kothari's UpdateHistory control (Nikhil 有一个很棒的博客,顺便说一句)它将把 UpdatePanel 的内容保存为浏览器历史列表中的历史条目。

编辑:仅供引用,UpdatePanel 不会“杀死”ViewState。 ViewState 通过 UpdatePanel 的更新机制来回传输,如果 ViewState 过大,通常会导致性能问题。您看到的是浏览器的历史记录缓存不存储在连续回调中更新的值。上述技术应该有所帮助。

关于asp.net - 我可以避免 UpdatePanel 杀死 View 状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1058863/

相关文章:

asp.net - 显示详细信息时出错(ObjectContext 实例已被释放)

asp.net - 类型 'Object' 在未引用的程序集中定义

javascript - 如何从 Controller 获取字符串并在 View 中使用它?

asp.net - jQuery 的 ajax 导致 FireFox 中的整页刷新

javascript - 单元测试没有失败

javascript - JS下拉菜单

javascript - 使用变量指定选择框获取更改选择框的选定值

jquery - 使用 JSON 数据自动完成 jQuery

javascript - 使用 AJAX 更新 d3 图表的最佳方法是什么

javascript - JavaScript 中的下拉菜单添加新元素