目前知道有4种:

1超链接

2、response.redirect("urlString")

3、server.transfer("urlString")

4、postbackurl

超链接:

首先是添加一个新的web窗体,然后在原有的默认页中添加一个超链接。

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Default2.aspx">去目标页面</asp:HyperLink>

这里的 NavigateUrl的值是一个相对路径,网页的位置呢也是在同一个项目中的。运行网页

看一下这个页面的源代码asp:HyperLink经过编译后变成了html的超链接标记。

  <div id="div_result">
        <a id="HyperLink1" href="Default2.aspx">去目标页面</a>
    </div>
       

如果asp:HyperLink的 NavigateUrl="www.baidu.com",那么在点击超链接的时候就会报错

可以看到,NavigateUrl的值如果直接写网址,系统会认为这是一个相对路径,在点击超链接的时候会自动的在其前面添加http。因此如果要访问项目以外的网页,需如此

  <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="http://www.baidu.com">去目标页面</asp:HyperLink>

除了asp:HyperLink 以外,在asp.net中还可以

<a href="Default2.aspx">我也去目标页面</a>

这两者显示在浏览器中的源代码都是一样的,不同的地方在于前者是一个web控件,可以在后台代码中参与更多的操作,比如可以让超链接文本根据需要显示不同的字符串,也可以定位的不同的网页。

response.redirect:

这是一个重定向,是服务器给浏览器一个重定向的指令。在默认页面中添加一个按钮,在后台代码中

 protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("Default2.aspx");
    }

同样的在这里如果要访问项目以外的网页,也需要添加http

 Response.Redirect的执行过程是:浏览器操作===>服务器编译====>发回页面===>浏览器按新url发出请求===>服务器响应新的url请求===>编译新的页面====>发回浏览器。要注意的是重定向请求只是一个GET请求,这就意味着我们不能从源页中通过重定向命令提交数据。但是我们可以在重定向中使用查询字符串来传递数据。如下面代码所示:
protected void Button1_Click(object sender, EventArgs e)   
{ Response.Redirect("Default2.aspx?userName=" + UserName.Text)); }

上面的例子将一个查询字符串作为参数传递给了Response.Redirect方法的目标URL。我们可以通过如下的代码获得源数据。

protected void Page_Load(object sender, EventArgs e)
  {
        string userName = Request["userName"];
      }
server.transfer:这个也是服务器重定向,但是它只在服务器端发生而不通知浏览器。执行过程:
浏览器操作===>服务器编译====>server.transfer重定向===>服务器响应新的url请求===>编译新的页面====>发回浏览器。两种重定向的比较:

server.transfer只能重定向到站内的网页,在按钮的后台代码中通过server.transfer来访问Default2.aspx,

可以看到地址栏里面的网址并没有改变,仍是默认页的地址。
postbackurl:凡是具有IButtonControl接口的控件都有postbackurl属性,用来定义目标页面的地址。(可以是本站的,也可以是外站的)。这种方式的跳转,目标页可以调用原页面中控件的值。在页面中添加一个asp:LinkButton控件,它就具有postbackurl属性。
<asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="~/Default2.aspx">LinkButton</asp:LinkButton>

运行程序后,查看网页源代码

<a id="LinkButton1" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;LinkButton1&quot;, &quot;&quot;, false, &quot;&quot;, &quot;Default2.aspx&quot;, false, true))">LinkButton</a>

现在来看看如何实现PostBackUrl跳转的目标页调用原页面中的控件的值:

这个是原页面中的控件代码

 <asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="~/Default2.aspx">我是LinkButton</asp:LinkButton>

在目标页中

protected void Page_Load(object sender, EventArgs e)
    {
        if(PreviousPage.IsCrossPagePostBack)
        {
            LinkButton b = (LinkButton)PreviousPage.FindControl("LinkButton1");
            Label1.Text = b.Text;
        }
    }
<div>
        <p>我是目标页面</p>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>

跳转后的页面

												

asp.net 页面跳转的方法的更多相关文章

  1. ASP.NET页面跳转的三大方法详解

    ASP.NET页面跳转有什么方法呢?,现在给大家介绍三种方法,他们的区别是什么呢?让我们开始吧: ASP.NET页面跳转1.response.redirect 这个跳转页面的方法跳转的速度不快,因为它 ...

  2. ASP.NET页面跳转的三种方法比较

    在ASP.NET下,经常需要在页面之间跳转,下面我们来分别介绍一下关于.NET中Response.Redirect(),Sever.Execute(),Server.Transfer() 三种页面跳转 ...

  3. js中页面刷新和页面跳转的方法总结

    .js中cookie的基本用法简介 2009-12-15 js中页面刷新和页面跳转的方法总结 文章分类:Web前端 关键字: javascript js中页面刷新和页面跳转的方法总结 1.histor ...

  4. 总结asp.net页面跳转

    ASP.NET页面跳转相关知识 一.<a>标签   1. <a href=”test.aspx”></a>   2. 这是最常见的一种转向方法; eg:  < ...

  5. Asp.net页面跳转Session丢失问题

    原本去年在做项目时,写好的一记篇博客分享给大家. Asp.net页面跳转Session丢失问题   编写人:CC阿爸 2014-4-2 l  近来在做泛微OA与公司自行开发的系统集成登录的问题.在使用 ...

  6. ASP.NET页面刷新的实现方法总结

    先看看ASP.NET页面刷新的实现方法: 第一: private void Button1_Click( object sender, System.EventArgs e ) { Response. ...

  7. Web设计中打开新页面或页面跳转的方法 js跳转页面

    Web设计中打开新页面或页面跳转的方法 一.asp.net c# 打开新页面或页面跳转 1. 最常用的页面跳转(原窗口被替代):Response.Redirect("newpage.aspx ...

  8. js中页面刷新和页面跳转的方法总结 [ 转自欢醉同学 ]

    .js中cookie的基本用法简介 2009-12-15 js中页面刷新和页面跳转的方法总结 文章分类:Web前端 关键字: javascript js中页面刷新和页面跳转的方法总结 1.histor ...

  9. java servlet 几种页面跳转的方法及传值

    java servlet 几种页面跳转的方法及传值   java web 页面之间传值有一下这几种方式1.form 表单传递参数2.url地址栏传递参数3.session4.cookie5.appli ...

随机推荐

  1. cocos2d-x 3.0游戏实例学习笔记 《跑酷》 完结篇--源代码放送

    说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...

  2. C++中的初始化列表中可以对那些变量或对象进行初始化

    构造函数与其函数体之间可以添加初始化列表,能对某些对象进行初始化.格式为 类名() : 变量1(参数1),变量2(参数2) { } 1.     父类的对象的构造必须在初始化列表中,如: 子类名(): ...

  3. Android 的权限设置大全

    android.permission.ACCESS_CHECKIN_PROPERTIES //同意读写訪问"properties"表在checkin数据库中.改值可以改动上传 an ...

  4. C#中Func<T,TResult>的用法和Lambda表达式

    在C#3.0中引用了Limbda表达式,Limbda表达式实际上就是一个方法,只不过该方法是匿名方法(即没有名称的方法)代码片段: Func<int,string,string> t=(i ...

  5. Ubuntu下安装arm-linux-gcc

    安装步骤: 这里采用友善之臂发布的arm-linux-gcc-4.4.3.tar.gz软件包. 一.将压缩包arm-linux-gcc-4.4.3.tar.gz存放在opt目录下. 执行解压命令:su ...

  6. Visual Studio宏注释模板

    前言 有时写代码需要写注释的时候 甚是苦恼 写吧 怕麻烦 不写吧 似乎这代码估计自己都看不懂 权衡之下 似乎找一个自动写注释的方法最靠谱 一直在VS下开发 偶尔听人说过有一个宏工具可以帮助开发者快速注 ...

  7. JSON之三:获取JSON文本并解释(以google的天气API为例)

    google提供了天气的api,以广州天气为例,地址为: http://api.openweathermap.org/data/2.5/weather?q=guangzhou 返回的结果为: {   ...

  8. win32 调用多媒体函数PlaySound()

    必须引入此头文件 #include <mmsystem.h>#pragma comment(lib, "WINMM.LIB") /*------------------ ...

  9. HDU 4121 Xiangqi

    模拟吧,算是... 被这个题wa到哭,真是什么都不想说了...上代码 #include <iostream> #include <cstring> using namespac ...

  10. 恶补ASP.NET基础【1】委托

    委托(delegate)是一种可以把引用存储为函数的类型. 委托的声明类似于函数,但不带函数体,且要使用delegate关键字,委托的声明指定了一个返回类型和一个参数列表. 在定义了委托之后,就可以声 ...