页面跳转及返回

跳转方法:

1)通过后台传参的跳转:    a.通过有回发功能的控件,如asp:LinkButton等

    析:

目标页面和原页面可以在2个服务器上,可输入网址或相对路径。后面的bool值为是否停止执行当前页。跳转向新的页面,原窗口被代替。"浏览器中的URL为新路径。:Response.Redirect方法导致浏览器链接到一个指定的URL。

当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代码302(表示目标已经改变)以及新的目标URL。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。这就是说,使用Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面的请求,得到一个302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面。

示例:     后台:protected void LinkButton1_OnClick(object sender, EventArgs e)             {                 Session["lialiaopihao"] = Label2.Text.ToString();                 Response.Redirect("../text2.aspx",true);              }     前台:<asp:LinkButton ID="LinkButton1" runat="server" OnClick = "LinkButton1_OnClick">链接至信息查询</asp:LinkButton>


     b.通过gridview控件     前台:<Columns>

    <asp:BoundField DataField="exp1" HeaderText="exp1"                         ItemStyle-Width="80px" ReadOnly="true">            <ItemStyle Width="80px" />    </asp:BoundField>

    <asp:BoundField DataField="exp2" HeaderText="exp2"             ItemStyle-Width="80px" ReadOnly="true">            <ItemStyle Width="80px" />    </asp:BoundField>    ....     <asp:HyperLinkField DataNavigateUrlFields="exp1,exp2"              DataNavigateUrlFormatString="~/ManufacturingManagement/RFID_Manage_Goods1.aspx?             aa={0}&bb={1}"  HeaderText="绑定" Text="绑定"/></Columns>

    c.通过QueryString传值    发送页面:string url = @"http://192.168.1.145/test.aspx?Surveyexp=";    string exp = "1";    Response.Redirect(url + exp);    接收界面:string exp = Request.QueryString["exp"] == null ? "" : Request.QueryString["exp"].Tostring();

    d.Server.Transfer("test.aspx?name = zhuangsan",true);

    目标页面和原页面可以在同一个服务器上。跳转向新的页面,原窗口被代替。默认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成Tb310True,就可以保留第一个页面的表单数据和查询字符串。同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查b310. (Machine&nbspAuthentication&nbspCheck,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合,必须把目标页面Page指令的EnableViewStateMac属性设置成False。

    e.Server.Executer(""test.aspx?id = three");

目标页面&原页面可以在同一个服务器上。跳转向新的页面,再调回原来的页面。浏览器中的URL为原路径,不会变。当指定跳转的页面控制流程重新返回原发出页Server.Executer调用的位置。这种方式类似于页面的一次函数调用,被调动页面可以访问发出调用页面的额表单数据和查询字符串集合。所以要把被调用页面的Page质量的EnableViewStateMac属性设置为false。


2)不传值

    a.<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl = "~/test.aspx">测试               </asp:HyperLink>    b.<asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="test.aspx">链接至信息查询                    </asp:LinkButton>

      注:这里不用定义OnClick,若果定义的话,则不会跳转,需在后台的事件 中通过Response.Redirect()进行跳转;    c. a元素跳转

    <head runat="server">        <script type="text/javascript">        function jump()         {           window.location.href = "http://www.baidu.com/";

        }

        </script>    </head>     <body>      

    <a href="javascript:" οnclick="fc()">跳转失败</a>     <a href="#" οnclick="fc()">跳转成功</a>

    </body>

    

     d.Response.Write("<script language = 'javascript'>window.open(tesp.aspx)</script>");

    目标页面和原页面,可以在2个服务器上,通过输入相对路径或者网址来实现。原窗口保留,另开一个页面。

     e.Response.Write("<script language = 'jaascript'>window.location(test.aspx)</script>");

    打开新的页面,原窗体被替换。

    f.Response.Write("<scriptlanguage='javascript'>window.showModalDialog('test.aspx')</script>");

    g.Response.Write("<script>window.showModelessDialog('Default2.aspx')</script>");

      注:showModalDialog 和 showModelessDialog 的区别:

         showModalDialog 被打开就一直保持出入焦点,除非对话框被关闭,否则无法切换到主窗口,就类似alert的运行效果。然而,showModelessDialog被打开后则不影响主窗口,焦点可以随意切换,只是窗口是否被挡住而已。若果想要Dialog上的超链接不弹出新的窗口,在新打开的页面内的<html>和<body>之间加入如下代码:<base target = "self">

返回:1)通过以上所属的跳转方法;             如: protected void fanhui_OnClick(object sender, EventArgs e)                    {                        Response.Redirect("./test.aspx");                    }         2)通过 ViewState             示例:在需要做跳转的每个页面的pageload中加入以下代码

                if (!IsPostBack)                {                    if (Request.UrlReferrer != null)                      {                        ViewState["UrlReferrer"] = Request.UrlReferrer.ToString();                    }                }            在后台的事件中加入以下代码:            protected void fanhui_OnClick(object sender, EventArgs e)            {                if(ViewState["UrlReferrer"]!=null)                    Response.Redirect(ViewState["UrlReferrer"].ToString());            }这样就可以实现页面之间的跳转及返回。



转载于:https://my.oschina.net/starmier/blog/141289

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值