Asp.net 如何刷新父对象而不丢失其ViewState?

Asp.net 如何刷新父对象而不丢失其ViewState?,asp.net,Asp.net,我在子窗口上使用此脚本在单击“关闭并刷新”时刷新父窗口: 函数RefreshParent(){ if(window.opener!=null&&!window.opener.closed){ window.opener.location.href=window.opener.location; } } 但是,刷新父窗口时,保存在ViewState中的Id将丢失,我无法再绑定控件 有什么解决办法的建议吗 编辑: 回答其中一条评论:我无法使用会话,因为我需要在“卸载事件”上清除会话,但是我发现在

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


函数RefreshParent(){
if(window.opener!=null&&!window.opener.closed){
window.opener.location.href=window.opener.location;
}
}
但是,刷新父窗口时,保存在
ViewState
中的Id将丢失,我无法再绑定控件

有什么解决办法的建议吗

编辑:


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

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

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

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

示例代码:

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

    </script>

函数RefreshParent(){
if(window.opener!=null&&!window.opener.closed){
window.opener.location.href=window.opener.location+“?childid=1”;
}
}

会话中保存id
@Bharadwaj谢谢你的建议,我编辑了我的问题来解释我使用会话的尝试你在使用
JavaScript
?或者
C#
?@Bharadwaj我在代码中使用C#,并使用javascript函数刷新父窗口,这节省了我很多精力。我将QueryString作为函数的参数,并在代码中设置它。谢谢
<script type="text/javascript">
        function RefreshParent() {
            if (window.opener != null && !window.opener.closed) {
                window.opener.location.href = window.opener.location + "?childid=1";
            }
        }

    </script>