button返回上一页面

本文介绍了在ASP.NET页面中解决返回按钮导致的URL获取失败问题的方法,通过在页面加载事件中捕获上一个页面的URL,并在返回按钮点击事件中使用捕获的URL进行页面跳转。
最初在返回按钮中的程序为: 
复制代码 代码如下:
#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.jb51.net/article/26839.htm
在 Android 开发中,实现点击按钮返回页面的功能,通常的做法是通过调用当前 Activity 的 `finish()` 方法来结束当前页面,从而返回到上个 Activity。这种实现方式适用于大多数标准的页面跳转场景。 以下是个典型的实现方式:在按钮的点击事件中调用 `finish()` 方法来关闭当前页面返回页: ```java Button backButton = findViewById(R.id.back_button); backButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); ``` 该方法通过绑定按钮的点击事件,并在事件处理中调用 `finish()` 来结束当前 Activity,从而实现页面返回功能[^1]。 如果当前页面个嵌入了 WebView 的 Activity,并且需要在点击返回按钮时优先处理 WebView 的历史页面回退,而不是直接关闭当前页面,则可以通过重写 `onKeyDown()` 方法实现: ```java @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && myWebView.canGoBack()) { myWebView.goBack(); // 返回 WebView 的上页面 return true; } return super.onKeyDown(keyCode, event); // 退出当前 Activity } ``` 此方法适用于在 WebView 中展示 H5 页面的场景,例如在 H5 页面中点击进入商品详情页后,通过返回键回到上页 H5 内容,而不是直接退出当前页面[^3]。 对于更复杂的页面导航需求,例如需要返回到指定的 Activity 并清空中间页面,可以通过 `Intent` 配合 `FLAG_ACTIVITY_CLEAR_TOP` 标志实现: ```java Intent intent = new Intent(this, TargetActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); finish(); ``` 此方式可以跳转到指定的目标 Activity,并关闭当前页面及位于目标页面之上的所有中间页面,适合需要精准控制返回栈的场景。 ### 示例布局文件(XML) ```xml <Button android:id="@+id/back_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="返回" /> ``` ### 注意事项 - 在使用 `finish()` 方法时,应避免在生命周期方法(如 `onCreate()` 或 `onResume()`)中直接调用,以防止出现意外行为。 - 如果需要在页面切换时添加动画效果,可以使用 `overridePendingTransition()` 方法自定义页面切换动画。 - 对于 Android 11 及以上版本,系统对任务栈的操作有更严格的限制,应确保使用符合规范的方式进行页面跳转和返回操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值