今天用ASP.NET做一个类似淘宝中的订单管理系统,遇到的问题:主界面通过一个超链接跳转到子界面后,试了好长时间还是无法从子界面返回主界面。

解决方法:

程序的相关介绍

主界面:未发货订单列表(http://localhost:18888/Order/UnfilledOrdersList.aspx)

子界面:订单详细信息(http://localhost:18888/Order/ViewOrderDetail.aspx?OrderId= id,其中id的值是在主界面中被选中的那条订单信息的id)

主页面为一个订单的主要信息,GridView中有一个HyperLink控件,通过它可以跳转到“订单详细信息”界面进而查看订单的详细信息。

子界面有一个“返回”Button,通过它跳转回主界面。

最初在返回按钮中的程序为:

#region 返回按钮 protected void btnReturn_Click(object sender, EventArgs e) { string url = Request.QueryString["Url"] == null ? "" : Request.QueryString["Url"].ToString(); Response.Redirect(url); } #endregion

经过调试,url得到的值总为空字符串,即url总为"",所以总是返回不到主界面。

查了资料后,我把程序改为:

//在页面加载事件中所加的代码 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) {
/******下面的代码一定要放在判断是否是回发事件中,否则仍得不到效果******/ if (Request.UrlReferrer != null) { ViewState["retu"] = Request.UrlReferrer.ToString(); } } } #region返回按钮
protected void btnReturn_Click(object sender, EventArgs e) { string url = ViewState["retu"].ToString() == null ? "" : ViewState["retu"].ToString(); Response.Redirect(url); }

修改后的代码,经调试,url = http://localhost:18888/Order/UnfilledOrdersList.aspx,即主界面的地址,因此能正确返回到主界面。

程序解释:用户通过客户端浏览器请求页面,页面第一次运行,语句"ViewState["retu"] =Request.UrlReferrer.ToString();”获取了该请求的上一个页面的URL。之所以将该语句放在"if (!IsPostBack){}"语句快中,是因为当用户输入信息、从可选项中进行选择或单击按钮后,页面可能再次被发送到Web服务器,在ASP.NET中被称为“回发”。更确地的说,页面发送会其自身。因此语句"ViewState["retu"] =Request.UrlReferrer.ToString();”仅需在首次请求页面时执行,而不是每次回发时都执行,这时用Page对象的IsPostBack属性来避免对往返行程执行不必要的处理。

在"if (!IsPostBack){}"处下断点调试时可以清楚得看到这一过程。

插曲:ASP.NET中LinkButton和HyperLink的区别

因为存在主界面向子界面跳转的问题,需要链接,LinkButton和HyperLink都可以实现,查了些资料,最后我选择了HyperLink,因为只是简单的跳转无需进行服务器端处理。在此介绍一下LinkButton和HyperLink的区别: 
     1)LinkButton支持回发,在服务器端处理页面跳转功能,将用户导航到目标URL。因此可以在链接到新页面前做一些处理,入检验输入,组合成新的URL等。  HyperLink不会回发到服务端,不能进行服务器端的处理。

2) LinkButton控件实现页面跳转是在Click事件中使用Response.Redirect等方法实现的。HyperLink只需设置NavigateUrl就可以实现页面跳转,
用法上最大的区別是 LinkButton有Click事件﹐而HyperLink沒有。

【转载自】:http://www.cnblogs.com/xiaoyudz/archive/2011/04/02/2003921.html

转载于:https://www.cnblogs.com/rookiebob/archive/2013/05/15/3749401.html

ASP.NET返回上一页面的实现方法相关推荐

  1. asp.net 返回上一页的实现方法小集

    其实要实现这个功能主要还是要用到javascript 方法一: 在asp.net的aspx里面的源代码中 <input type="button οnclick="javas ...

  2. Javascript实现返回上一页面并刷新

    今天写了一个小小的提示成功的页面,同时要求返回上一页面,并实现对上一页面的操作进行刷新(例如删除的,添加的),在网上搜寻了一遍,基本上90%的都是说的是用window.history.go(-1), ...

  3. selenium如何在同一个窗口页面中返回上一个页面窗口(Python)。

    用driver.back() 方法,(当前窗口返回上一级页面) 上代码: 用一个简单的网页做实验.百度新闻,它的标签页都是本页面加载. url = http://news.baidu.com/ fro ...

  4. 工作304:uni返回上一页面

    activated(){this.cheange(0) }, 用于刷新uni页面的操作 返回上一个页面

  5. Qt实现页面跳转与返回上一级页面(Qt+VS2019)

    Qt实现页面跳转与返回上一级(Qt+VS2019) 页面跳转 返回上一级 页面跳转 问题描述:主界面yangc.ui;需要在主界面点击按钮后进入相应子界面,在子界面点击"返回"按钮 ...

  6. 后退一步 小程序_微信小程序返回上一级页面的实现代码

    微信小程序返回上一级页面 wx.navigateBack({ delta: 1 //返回上一级页面}) html: 保存 js: //提交 submit(){ let data = this.data ...

  7. js 原生代码跳转页面,返回上一级页面

    标签形式跳转: <a href="www.baidu.com" target="_blank"> </a> 跳转到某个页面: windo ...

  8. 微信小程序返回上一级页面时刷新页面

    问题描述: 微信小程序返回上一级页面时需要重新加载一下数据 问题解决: 方法一: 在需要返回的页面的onShow(){}方法中调用要刷新数据的方法 方法二: goBack(){let pages = ...

  9. 返回上一页面刷新与不刷新的方法

    返回上一页面不刷新上一页面的方法:history.back() back() 方法可加载历史列表中的前一个 URL(如果存在). 调用该方法的效果等价于点击后退按钮或调用 history.go(-1) ...

最新文章

  1. debian编译安装python_编译安装python2.7及相关模块(debian5.0.1)
  2. react项目开发步骤_成为专业React开发人员的31个步骤
  3. 用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)
  4. Configure Drill
  5. 编译安装MySQL5.6失败的相关问题解决方案
  6. Failed to initialize NSS library
  7. 编辑器的合并用不了_Excel多工作簿合并为一个工作簿,10秒搞定,这才是最高效的方式...
  8. mysql报错注入实战_MySQL手工注入实战
  9. 【个人笔记】OpenCV4 C++ 快速入门 14课
  10. Jquery Ajax 异步设置Table中某列的值
  11. github rust 项目Travis ci配置
  12. Managed Direct3D开发经验浅析
  13. css 实现对话气泡
  14. 计算机图形学之机器人
  15. 基于面部视频的心率监测系统 day 10
  16. 论文总结 - Playing Atari with Deep Reinforcement Learning
  17. 值得我们思考的5个问题
  18. SpringMVC图片文件上传功能实现
  19. NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized“
  20. 小程序---365笔记第11天---微信小程序登录接入

热门文章

  1. matlab生产正弦mif文件
  2. java拍照搜题软件下载_修改版|学生福利!!免费拍照搜题秒出答案,扫一扫作业出答案!...
  3. Python说“万能钥匙”不可见密码,立马写了个脚本解决了
  4. python语言中的多行注释符是_有没有一种方法可以在Python中创建多行注释? - python...
  5. 如何清空DNS缓存Windowslinux
  6. 为什么异步Python比同步Python快?
  7. 牛客网编程初学者入门训练 BC28
  8. 手写体数字识别(理解起来更简单一点)
  9. [HAOI2012]音量调节 入门dp
  10. python 调用函数 开销_参数中带有函数的Python日志记录开销