dopostback函数

时间:2014-08-08 12:10:55   收藏:0   阅读:204

自己公司的产品,页面一般都是用的updatepanel+__dopostback方式开发。这个很容易就可以实现异步操作。但是今天有个功能:页面上下载文件后,点击我们自己的分页控件后提示"未能从服务器分析收到消息"。经过调试,是因为点击了一次下载后。点击下一页还是执行下载操作。这里说一下我们开发页面会在页面上放置一个隐藏域来标识每次的操作是什么。然后根据这个标识来调用不同的方法,然而之前我们每进行一次操作就会清空这个值。但是Response会阻断代码执行,没有清空隐藏域的值,所以每次都是下载操作。这时我把清空的代码置前一点就觉得可以了。但是发现每次还是会保留上次的值。这是因为Response输出流后没有对控件的viewstate进行保留。也就是清空操作实际上没有写入viewstate。所以隐藏域的viewstate自然还是上次的值。这里怎么解决呢?了解__doPostBack函数后。发现他有两个参数。第一个参数是控件的ID,用来表示哪个控件引发了页面的回传,第二个参数是所带的值,这个参数很少用。当提交表单时。Request.Form会多两个参数,我们抓取到__EVENTTARGET这个参数就知道是谁造成页面回传。进而执行我们的逻辑。

    

if (Request.Form["__EVENTTARGET"] == "Pagercontrol1$btnNextPage" || Request.Form["__EVENTTARGET"] == "Pagercontrol1$btnGoPage")
            {
                hidCommand.Value = "";
            }
            switch (hidCommand.Value)
            {
                case "doOpenAccept":
                    DoOpenAccept();
                    break;
            }

 

dopostback函数,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!