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,一经查实,立即删除!

相关文章

编辑器

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,文本格式设置,常见的编辑,复…

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

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

Rose与PowerDesigner:两款建模工具对比分析比较

一、 二者的出身 作为世界最著名的两大CASE工具,Rational Rose和PowerDesigner的名声可谓如雷贯耳。Rose是当时全球最大的CASE工具提供商Rational的拳头产品,UML建模语言就是由Rational公司的三位巨头Booch、Rumbaugh和Jacobson发明的,后来R…

c#活动目录操作

添加引用 System.DirectoryServices导入命名空间 using System.DirectoryServices;srvip "192.168.1.1"; dn "DCl,DCcom";user "administrator"; pwd "123"; DirectoryEntry de;denewDirectoryEntry("LDAP://"srvip &quo…

[导入]Ajax使用初步

文章来源:http://blog.csdn.net/21aspnet/archive/2007/03/19/1534299.aspx 转载于:https://www.cnblogs.com/zhaoxiaoyang2/archive/2007/03/20/816309.html

CodeForces 570B,C

CodeForces 570B 题意:给定n和m,然后再(1-n)中随机取出c,求一个m使得 的概率最大,概率一样时输出最小的m。 思路:只需要看1到m-1和m1和n的最大的那一边就可以了,坑是n1的情况和n为…

验证码(转)

把下面代码存为一个文件code.aspx。另一个文件里调用<img src"code.aspx">using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebCo…

ASP.NET 2.0 的数据源、数据绑定控件概述与区别

一、Render UI 1 GridView GridView 控件用来在表中显示数据源的值。每列表示一个字段&#xff0c;而每行表示一条记录。GridView 控件支持下面的功能&#xff1a; 绑定至数据源控件&#xff0c;如 SqlDataSource。 内置排序功能。 内置更新和删除功能。 内置分页功能。 内…

[导入]javascript总结

1.动态添加一行&#xff0c;和删除当前行<script> var count0; function ff() { var txt1document.getElementById("Text1"); var table1document.getElementById("table1"); rowNotable1.rows.length; Trtable1.insertRow(rowNo); Tr.id"tr&qu…

求助:DataGrid加行号的问题

我的数据是fname,lnameprivatevoidPage_Load(objectsender, System.EventArgs e) { if(!IsPostBack) { myConnectionnew SqlConnection("server127.0.0.1;uidsa;pwdsa;databaseqqq;"); strSQL"SELE…

CVS的使用教程(转)

、什么是CVS? CVS - Concurrent Versions System&#xff08;并发版本管理系统&#xff09;是一个版本控制管理系统&#xff0c;它是目前最为广泛使用的一个系统。 在多人共同开发一个大型项目时&#xff0c;源代码的维护和版本维护是一件令人头疼的事情&#xff0c;由于多人开…

压缩图片上传到数据库

保存到数据库public int DyfcListInsert(int id,string name,string username,string content,Byte[] photo) { string sql "S_DyfcList_Insert"; SqlCommand sqlcmd new SqlCommand(sql,DwzxConfiguration.ConnectDB() ,DwzxConfigu…

使用CodeDom生成程序集

usingSystem;usingMicrosoft.CSharp;usingSystem.CodeDom.Compiler;usingSystem.CodeDom;namespaceTest.CUI{ class Program { static void Main() { // 创建编译器对象 CSharpCodeProvider p new CSharpCodeProvider(); ICodeCompiler cc p.CreateCo…

汇编语言——第1次上机实验

准备&#xff1a; 硬件&#xff1a;pc机&#xff0c;32位win操作系统&#xff0c;能够运行dos&#xff0c;某些64位win10系统可能会不支持 软件&#xff1a;masm程序 实验内容&#xff1a; 1.winr运行dos&#xff0c;cd到指定的masm目录&#xff08;为了调试方便&#xff0c;所…

[导入]一再的变故,终于决定何去何从.

dudu文章来源:http://blog.csdn.net/veiny/archive/2007/09/12/1781906.aspx 转载于:https://www.cnblogs.com/veiny/articles/904703.html

汇编语言——第2次上机实验

实验要求&#xff1a; 求表达式x*yz-200的值 实验步骤&#xff1a; 1.按照实验要求&#xff0c;画出相应的计算流程图 可以看到&#xff0c;先算x*y&#xff08;保存在dx&#xff1a;cx&#xff09;&#xff0c;然后扩展z为双字节&#xff08;dx&#xff1a;ax&#xff09;&am…

SQL Server 2005 中附加只有mdf文件的数据库(修复置疑的数据库)

在利用VSTS中&#xff0c;VSTS不能创建团队项目&#xff0c;数据库ReportServer出现置疑现象&#xff0c;数据库无法打开。修复过程中&#xff0c;由于想利用SQL SERVER 2000的功能&#xff0c;先备份了ReportServer库文件和日志文件&#xff0c;然后删除数据库。在此之前先进行…

是否会成为问题——Linq to Sql的执行可能无法复用查询计划

查询计划 Sql Server在执行一条查询语句之前都对对它进行“编译”并生成“查询计划”&#xff0c;查询计划告诉Sql Server的查询引擎应该用什么方式进行工作。Sql Server会根据当前它可以收集到的各种信息&#xff08;例如内存大小&#xff0c;索引的统计等等&#xff09;把一条…

介绍及安装

不知读者是否听说过“宠物大战”&#xff1f;大意为Sun公司为帮助开发人员和架构师使用J2EE技术&#xff0c;发布了一个在线宠物商店Sun Java Pet Store。而微软公司则利用.NET技术也发布了一个实现同样功能的PetShop&#xff0c;并且在代码数量、性能等各方面对二者进行了比较…

自定函数获取datagrid,datalist,rpeater控件中header,footer栏中控件

在论坛上看到很多关于datagrid,gridview,datalist,rpeater提取header,footer中控件的问题,整理了一下.供大家分享下面我以DataGrid为便进行说明.footer栏又称页脚栏,在很多时候我们可以在该栏放页码及相当的功能键.但是最后在获得这些控件引用的时候就会有点麻烦,由于footer(页…