• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET关于判断是否是客户端“刷新”页面的方法[转]

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在CSDN发现一个好贴,收藏一下!

原贴地址:http://topic.csdn.net/u/20080921/21/9bb09e95-896e-49fd-a389-8e36d320acd3.html?seed=1021501664

在你的项目中放入这样一个ascx用户控件:



    public bool isRefreshed
    {
        get { if (_flag.HasValue) return _flag.Value; else { _flag = this.Cache[Num] != nullreturn _flag.Value; };}
    }

    private bool
? _flag;

    private string Num
    {
        get { 
if (ViewState["num"== nullreturn Guid.NewGuid().ToString(); else return (string)ViewState["num"]; }
        set { ViewState[
"num"= value; }
    }

    protected 
void Page_PreRender(object sender, EventArgs e)
    {
        
this.Page.Unload += new EventHandler(Page_Unload);
        _num 
= Num;
        Num 
= Guid.NewGuid().ToString();
    }

    private string _num;

    
void Page_Unload(object sender, EventArgs e)
    {
        
this.Cache[_num] = 1;
    }

</script>

 

这个用户控件运行时没有界面显示。当你把它放入页面,就可以在页面中访问它的 isRefreshed 属性,判断这个页面是否是浏览器点“刷新”而重复提交来的。

可以这样检验这个用户控件:


    <title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<asp:Button ID="Button1" runat="server" EnableViewState="False" 
        onclick
="Button1_Click" Text="Button" />
    
<uc1:CheckRefresh ID="CheckRefresh1" runat="server" />
    
</form>
</body>
</html>

 

 _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        
this.Button1.Text = this.CheckRefresh1.isRefreshed.ToString();
    }

    
protected void Page_PreRender(object sender, EventArgs e)
    {
        
this.Button1.Text += "," + this.CheckRefresh1.isRefreshed.ToString();
    }

    
protected void Button1_Click(object sender, EventArgs e)
    {
        
this.Button1.Text += "," + this.CheckRefresh1.isRefreshed.ToString();
    }
}

 

      这个测试页面打印page_load、之后的控件客户端操作触发的事件、page_prerender时候的状态。注意EnableViewState="False" ,因此打印的是页面即时的值。这个测试基本可以说明,在页面输出html之前,包括所有控件的PreRender甚至Render过程中,都可以正确地读取控件的 isRefreshed 属性来判断当前页面是否是“刷新”而来的。当然,如果页面显示之后,应用程序恰好被重启了,那么是不能立刻紧接着的刷新操作中检查出来它是重复应用程序重启以前的页面的了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.net学习记录(一)使用asp.net构建webAPI接口发布时间:2022-07-10
下一篇:
asp.net读取CSV发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap