如何在不丢失ViewState的情况下刷新父级?

时间:2014-12-23 13:32:52

标签: asp.net

我在子窗口上使用此脚本在单击“关闭并刷新”时刷新父窗口:

 <script type="text/javascript">
        function RefreshParent() {
            if (window.opener != null && !window.opener.closed) {
                window.opener.location.href = window.opener.location;
            }
        }

    </script>

但是,当刷新父窗口时,保存在ViewState中的ID将丢失,我无法再绑定我的控件。

有关解决方法的任何建议吗?

编辑:

回答其中一条评论:我无法使用Sessions,因为我需要清除“卸载事件”上的会话,但是我发现在回发时调用了Unload事件(如果我是的话请纠正我错了)并且仍然会失去价值。

1 个答案:

答案 0 :(得分:1)

viewstate的工作方式基本上是将数据保存到html页面。因此,当您刷新页面时,页面加载将重新创建页面,就像第一次访问页面一样。您是否尝试在关闭子页面后将查询字符串添加到父页面,然后根据查询字符串绑定控件?

注意:如果您有不想存储在查询字符串中的敏感数据,则可以加密该值并将其放入查询字符串中。然后在读取解密它。查询字符串的一个重大缺点是url现在可以缓存。

示例:www.yoursite.com/parentpage?childpageid = 1 然后在你的pageload或wherver中绑定控件,你只需检查url中是否有查询字符串。

示例代码:

<script type="text/javascript">
        function RefreshParent() {
            if (window.opener != null && !window.opener.closed) {
                window.opener.location.href = window.opener.location + "?childid=1";
            }
        }

    </script>
相关问题