ASP.NET 中处理页面“回退”的方法

我们在编写基于 ASP.NET 的应用程序时,如果代码执行出错或检测到异常,一般会提示用户“返回”或“回退”,或者在多步操作、列表/详细的查看界面中,也会给用户提供回退到上一页面的链接,对于这种情况,大家很快就会想到的简单做法就是利用 Javascript 来实现,即 history.go(-1) ,但是由于 ASP.NET 页面的 PostBack 机制,所以 history.go(-1) 可能还是当前页面,而不能真正回退到上一页面。

在 Classifieds Site Starter Kit 中,学习到一种不错的关于回退的处理方法,可以分别在客户端和服务器控件中实现页面的回退,代码如下:

1)首先在页面中增加两个属性

None.gif //记录上一个页面的信息
None.gif private string UrlReferrer ExpandedBlockStart.gifContractedBlock.gif...{ InBlock.gifget ExpandedSubBlockStart.gifContractedSubBlock.gif...{ InBlock.gifreturn ViewState["UrlReferrer"] as string; ExpandedSubBlockEnd.gif } InBlock.gifset ExpandedSubBlockStart.gifContractedSubBlock.gif...{ InBlock.gif ViewState["UrlReferrer"] = value; ExpandedSubBlockEnd.gif } InBlock.gifExpandedBlockEnd.gif } None.gifNone.gif//记录 PostBack 的次数 None.gif public int NumPostBacks ExpandedBlockStart.gifContractedBlock.gif...{ InBlock.gifget ExpandedSubBlockStart.gifContractedSubBlock.gif...{ InBlock.gifif (ViewState["NumPostBacks"] != null) InBlock.gifreturn (int)ViewState["NumPostBacks"]; InBlock.gifelse ExpandedSubBlockStart.gifContractedSubBlock.gif...{ InBlock.gif ViewState["NumPostBacks"] = 0; InBlock.gifreturn 0; ExpandedSubBlockEnd.gif } ExpandedSubBlockEnd.gif } InBlock.gifset ExpandedSubBlockStart.gifContractedSubBlock.gif...{ InBlock.gif ViewState["NumPostBacks"] = value; ExpandedSubBlockEnd.gif } ExpandedBlockEnd.gif }
 

2)在 Page_Load 事件记录上一页面地址、更新 Postback 次数、设置回退链接的地址
None.gif // 记录上一页面的信息或更新 PostBack 的次数 None.gif protected void Page_Load(object sender, EventArgs e) ExpandedBlockStart.gifContractedBlock.gif...{ InBlock.gifInBlock.gifif (!Page.IsPostBack) ExpandedSubBlockStart.gifContractedSubBlock.gif...{ InBlock.gifif (Request.UrlReferrer != null) InBlock.gifthis.UrlReferrer = Request.UrlReferrer.ToString(); ExpandedSubBlockEnd.gif } InBlock.gifelse InBlock.gif NumPostBacks++; InBlock.gifInBlock.gifint goBackSteps = NumPostBacks + 1; InBlock.gif BackLink.NavigateUrl = String.Format("javascript:history.go(-{0});", goBackSteps); ExpandedBlockEnd.gif }

 

3)直接在代码中处理回退操作(如 Back_Click),可以直接调用如下方法

None.gif //在代码中回退 None.gif protected void ReturnToPreviousPage() ExpandedBlockStart.gifContractedBlock.gif...{ InBlock.gifstring referrer = UrlReferrer; InBlock.gifif (referrer != null) InBlock.gif Response.Redirect(referrer); InBlock.gifelse InBlock.gif Response.Redirect("~/default.aspx", true); ExpandedBlockEnd.gif }

转载于:https://www.cnblogs.com/brusehht/archive/2006/10/18/532185.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uva 1631——Locker

题意:有一个n位的密码锁,每位都是0——9可以循环旋转,每次可以往上或者往下旋转一下,然后给定初始状态和末状态求最小旋转步数。 思路:递推,dp(i,x,y)表示翻到…

socekt编程-select

摘抄自 https://blog.csdn.net/lovekun1989/article/details/41042273 https://blog.csdn.net/Ctrl_qun/article/details/52524086 分为无select和有select版本,无select只能一个服务端一个客户端,有select能一个服务端对应多个客户端。 无select&#x…

uva 1632——Alibaba

题意:直线上有n个点,其中第i个点的坐标是xi,且他会在di秒后消失,阿里巴巴可以从任意位置出发,求访问过所有节点的最短时间,不能输出-1; 思路:01背包问题,dp(i…

忙活了,暂时歇笔

估计近期活忙起来,有活忙就好,埋头不用想什么。所以暂时歇笔。估计有一段时间才更新。 转载于:https://www.cnblogs.com/zuolun/archive/2006/10/25/540051.html

CentOS7.6安装MYSQL8.0的步骤详解

转载 https://www.jb51.net/article/174536.htm

uva 10163——Storage Keepers

题意:给定n个相同的仓库,有m个人轮流值守,第i个人的应聘者的能力为pi,如果应聘者看守k个仓库,则仓库安全指数为pi/k的整数部分,求使得所有最小安全系数最大且工人pi最小的设计。 思路:二分01背包…

李开复:21世纪7种人才最抢手

21世纪最需要哪些人才?昨(22)日,Google副总裁、Google大中华区总裁李开复博士作客电子科技大学,以《21世纪最需要的七种人才》为题给大学生们带来了一场充满睿智而又不失幽默的演讲。李开复说:“21世纪&…

不进行格式化将U盘快速转换为NTFS格式

这里,我们要用到Windows自带的convert工具。 打开开始菜单,在“所有程序”“附件”中找到“命令提示符”,然后右击,选择以管理员身份运行。 可以输入convert /?查看用法。 先确认一下U盘的盘符,此处为G。 输入convert…

博客园培训OOAD的课程概要

于众不弃,由我负责博客园培训中OOAD的课程。因涉及内容较多,所以我整理了一个课程概要式的内容提要,希望大家能够给予宝贵的意见和指导。OOAD课程大纲 概述 透视OOAD的背后—软件学习之道、术、器 该部分讲述软件学习之路上存在的问题。将软件…

Linux下抓包命令tcpdump

本文内容来源于网络 转载:https://www.cnblogs.com/monogem/p/9802756.html PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为Lin…

uva 12589——Learning Vector

题意:输入n个向量(x,y),要求选出k个,从(0,0)开始画,使得画出来的折线与x轴围成的面积最大。输出面积的二倍。 思路:01背包,dp[i][j]表…

Pocket PC/Smartphone软件安装包之制作DIY

Pocket PC/Smartphone软件安装包之制作DIY<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />当我们开发完Pocket PC或者Smartphone的软件后&#xff0c;都需要考虑如何制作给最终用户使用的软件安装包。专门用于制作安装包的软件有…

计算机启动和linux启动

计算机是如何启动的 http://www.ruanyifeng.com/blog/2013/02/booting.html Linux 的启动流程 http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html

编辑器

1.FCKeditor 编辑器 FCKeditor is compatible with most internet browsers which include: IE 5.5 (Windows), Firefox 1.0, Mozilla 1.3 and Netscape 7. 最新版本:FCKeditor 2.0 语言环境:多国语言特性功能:所见所得,支持平台众多,支持XHTML 1.0,文本格式设置,常见的编辑,复…

uva 10271——Chopsticks

题意&#xff1a;有n只筷子&#xff0c;然后选出来k8套&#xff08;一套有三只&#xff0c;分别ABC&#xff09;&#xff0c;一套筷子质量为最小的两只的平方&#xff0c;选出的使得总的质量和最小。 思路&#xff1a;01背包。dp[i][j]表示j套利选出来i套的最优解&#xff0c;每…

VSTO---excel编程 [待续] [12月5日更新,详见文档下面]

最近比较闲了&#xff0c;考试也快要到了。但是编程技术方面还是不能掉啊.现在开始VSTO编程之旅了。这个话题是连Blog的。所以有兴趣的Blog之友&#xff0c;技术之士&#xff0c;可以匿名或者非匿名的评论&#xff0c;交流。对了&#xff0c;下面的代码都是本人写的&#xff0c…

uva 1630——Folding

题意&#xff1a;给出一个由大写字母组成的长度为n的串&#xff0c;然后尽量折叠成一个尽量短的串&#xff0c;折叠可以嵌套。 思路&#xff1a;区间dp&#xff0c;dp&#xff08;i&#xff0c;j&#xff09;表示区间&#xff08;i&#xff0c;j&#xff09;的最短的串的长度&a…

uva 1433——Garlands

题意&#xff1a;给定n个值&#xff0c;然后把这n个值分为m-1段&#xff0c;每段的一半长度不超过k&#xff0c;求分得的的段中&#xff0c;最大的半段的最小值。 思路&#xff1a;二分dp&#xff0c;dp&#xff08;i&#xff0c;0&#xff09;表示前i个不超过x的最小段数&…

今天开始学C#.NET

因项目需要&#xff0c;今天开始接触C#.NET。从Java到C#&#xff0c;真的是比较简单&#xff0c;先学会了VS2003。本来想用VS2005&#xff0c;但项目上要求用VS2003&#xff0c;也就是.NET Framework1.1&#xff0c;所以就打算从VS2003入手&#xff0c;先在公司 的笔记本上装好…

VS.NET提示试图运行项目时出错:无法启动调试。绑定句柄无效解决办法

也许是我迟发现了&#xff0c;总之我是刚刚才遇到这个问题的&#xff0c;挺不爽的&#xff0c;从模板新建的项目&#xff0c;未添加一行代码却出现了调试错误。&#xff08;不用调试倒没事&#xff09;有点郁闷。还好&#xff0c;&#xff08;感谢一下发明搜索引擎的人&#xf…