当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET返回上一页面的实现代码

ASP.NET返回上一页面的实现代码

2017年12月12日  | 移动技术网IT编程  | 我要评论

杨幂快乐大本营,人类之子qvod,石榴树

解决方法:

程序的相关介绍

主界面:未发货订单列表(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沒有。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网