`
tudusi
  • 浏览: 1045841 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多
作者:stg609来源:博客园发布时间:2008-09-22 11:01阅读:671 次原文链接 [收藏]

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

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

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

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><%@ControlLanguage="C#"ClassName="CheckRefreshed"%>
<scriptrunat="server">

publicboolisRefreshed
{
get{
if(_flag.HasValue)return_flag.Value;else{_flag=this.Cache[Num]!=null;return_flag.Value;};}
}

privatebool
?_flag;

privatestringNum
{
get{
if(ViewState["num"]==null)returnGuid.NewGuid().ToString();elsereturn(string)ViewState["num"];}
set{ViewState[
"num"]=value;}
}

protected
voidPage_PreRender(objectsender,EventArgse)
{
this.Page.Unload+=newEventHandler(Page_Unload);
_num
=Num;
Num
=Guid.NewGuid().ToString();
}

privatestring_num;

voidPage_Unload(objectsender,EventArgse)
{
this.Cache[_num]=1;
}

</script>

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

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

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%>

<%@Registersrc="CheckRefreshed.ascx"tagname="CheckRefresh"tagprefix="uc1"%>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>无标题页</title>
</head>
<body>
<formid="form1"runat="server">
<asp:ButtonID="Button1"runat="server"EnableViewState="False"
onclick
="Button1_Click"Text="Button"/>
<uc1:CheckRefreshID="CheckRefresh1"runat="server"/>
</form>
</body>
</html>

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->usingSystem;

publicpartialclass_Default:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
this.Button1.Text=this.CheckRefresh1.isRefreshed.ToString();
}

protectedvoidPage_PreRender(objectsender,EventArgse)
{
this.Button1.Text+=","+this.CheckRefresh1.isRefreshed.ToString();
}

protectedvoidButton1_Click(objectsender,EventArgse)
{
this.Button1.Text+=","+this.CheckRefresh1.isRefreshed.ToString();
}
}

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

分享到:
评论

相关推荐

    ASP.NET2.0实现无刷新客户端回调的Callback机制

    ASP.NET2.0实现无刷新客户端回调的Callback机制

    ASP.NET AJAX入门系列教程

     ASP.NET 在2007年初推出了其第一个正式版本,并将Atlas更名为ASP.NET AJAX,对应服务器端和客户端分别对应有ASP.NET服务器端编程模型和ASP.NET客户端编程模型,前者包含ASP.NET 2.0 AJAX Extensions和,后者包含...

    ASP.NET AJAX无刷新数据— ASP.NET AJAX无刷新数据

    使用ASP.net的Ajax功能,可方便快捷的创建响应能力快的网页,并提供丰富的用户体验效果。Ajax的实现其实来自客户端脚本库。这下库将据阿月浏览器的JavaScript和dhtml技术结合在一起,并与基于ASP.net服务器的开发...

    asp.net知识库

    ASP.NET 2.0 正式版中无刷新页面的开发(示例代码的补充) ASP.NET2.0中themes、Skins轻松实现网站换肤! ASP.NET 2.0 中的代码隐藏和编译 ASP.NET 2.0 Language Swithcer and Theme Swicher 多语言转换和多样式主题...

    ASP.NET AJAX

    ajax技术,无刷新技术 导读:ScriptManager控件包括在ASP.NET 2.0 AJAX Extensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持...

    asp.net省市县三级联动源码

    ASP.NET+ajax+xml实现的全国省市县(区)无刷新联动源码。  创建服务器端方法。只要给一个方法加上[AjaxPro.AjaxMethod]标记,该方法就变成一个AjaxPro可进行映射调用的方法[Ajax.AjaxMethod],该方法我们将实现从...

    ASP.NET开发实战1200例(第Ⅱ卷)源码

    然后从常用web服务器控件、asp.net安全验证控件、数据绑定控件、web用户控件和asp.net导航控件全面介绍了几乎所有asp.net控件应用,接着以ajax无刷新技术及页面模板设计对asp.net客户端进行了详细介绍,最后以高效...

    asp.net专家疑难解答200问

    第2章 ASP.NET运行模型 21.如何在页面中应用javascript脚本-示例1 21.如何在页面中应用javascript脚本-示例2 22.如何实现从服务器端向页面动态添加javascript脚本-示例1 22.如何实现从服务器端向...

    asp.net signal推送消息

    谈到ASP.NET SignalR大多数人应该会比较的熟悉,因在我们的mvc项目中,使用到ASP.NET SignalR的地方还是比较多的。 ASP.NET SignalR是ASP.NET开发人员的库,它简化了向应用程序添加实时Web功能的过程。实时网络...

    ASP.NET+jQuery 批量文件上传控件及示例程序

    这是一个ASP.NET多文件上传用户控件的源代码,另附上了控件的应用实例,加入了jQuery插件,实现了批量无刷新上传,客户端判断文件上传类型,你可以在页面中直接调用,小巧方便。实例只是为了演示,暂时只支持JPG/GIF...

    ASP.NET高级编程:为校园BBS用户注册提供无刷新验证.pptx

    目 录;;;什么是AJAX AJAX(Asynchronous JavaScript and ...在ASP.NET 3.5中,可以直接拖动AJAX控件,像普通控件一样的使用,实现Web页面的无刷新功能。在ASP.NET 3.5中,Web.config文件中已经声明了AJAX功能。;Scrip

    ASP.NET 3.5 开发大全

    1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio ...

    ASP.NET3.5从入门到精通

    1.1.4 ASP.NET 客户端 1.1.5 ASP.NET 3.5 新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET 应用程序需框架 1.2.1 什么是.NET 应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio...

    ASP.NET 2.0客户端回调的实现分析

    很实用的东东,asp.net不刷新实现功能调用(c#)

    ASP.NET 3.5 开发大全word课件

    1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio ...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    ASP.NET 3.5 开发大全11-15

    1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio ...

    ASP.NET 3.5 开发大全1-5

    1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET Framework 类库 1.3 安装Visual Studio ...

    ASP.NET4高级程序设计(第4版) 3/3

    此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软的ASP.NETAJAX平台。另外,还专门介绍了ASP.NET4 新增的功能,如MVC 和动态数据等。  ...

Global site tag (gtag.js) - Google Analytics