您所在的位置: 程序员家园 -> 家园博客 ->
 
在哪里摔倒
就在哪里自己爬起来

用户登录

查  找

最新评论

最新留言

常用网站

网易邮箱 GMAIL  

百度搜索 MSDN

霏凡软件 BT精品

影视帝国 射 手 网

电驴下载 全 库 网

友情连接

茄菲的窝 冰冰博客

枫叶飘零 玫  瑰

ACEN 云 豹 子

统  计



有选择的返回上一页 
狼子 发表于 2006-9-7 13:34:00 阅读全文 | 回复(0) | 引用通告 | 编辑

在asp.net里,控件分服务器端控件和html控件,服务器端控件的执行在服务器端进行,html控件的执行在客户端进行

返回上一页的功能,有两种实现方法:

1、用客户端js脚本:history.go(-1);

2、用服务器端代码:Response.Redirct("页面地址");

如果是返回上一页,我们一般使用第一种方法

有时候,我们要有选择的返回上一页,就是当多个页面同时可以连接到一个页面的时候,如果有一个页面的“返回”是特殊的(修改数据后,直接返回上一页,返回的是修改页面,如果我们要返回到标题列表),我们就不可以直接用第一种方法了

在asp里,我们可以取上一页的地址判断是用哪一种方法,在asp.net里,取上一页的地址很有问题


Request.UrlReferrer.ToString();取上一页的地址
Request.Url.ToString();取当前页面的地址

如果要使用第二种方法,我们要用服务器端控件,服务器端控件的执行要先返回服务器,所以上一页的地址改变了

举例:从页面aaa.aspx转到bbb.aspx,在bbb.aspx里有一个<asp:Button>,点击这个Button后,会出现:
Request.UrlReferrer.ToString()==Request.Url.ToString()

就是我们想要的“上一页”地址已经变了

解决办法:static

我是这样解决的:

在aspx页面设置两个控件,一个是客户端的,一个是服务器端的:
<input id="Button3" type="button" value="返回" onclick="history.go(-1);" style='<% ="visibility:" + backvsb %>;' />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="返回事件列表" Width="90px" />

在cs页面:
    protected static string backurl="";
    public string backvsb = "visible";

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //处理返回按钮
            backurl = Request.UrlReferrer.ToString();
            if (backurl.IndexOf("EventEdit.aspx") > 0)
            {
                backvsb = "hidden";
                Button2.Visible = true;
            }
            else
            {
                backvsb = "visible";
                Button2.Visible = false;
            }
        }
    }

这样,当页面从EventEdit.aspx转过来时,我隐藏客户端按钮,当页面从其他页面转过来时,我隐藏服务器端按钮

发表评论:

    昵称:
    密码:
    主页:
    标题:
Powered by Oblog.