zoukankan      html  css  js  c++  java
  • .Net页面跳转

    Response.Redirect()方法

    以下情况使用Response.Redirect()方法:

    1.用户连接到另一台服务器上的资源;

    2.把用户连接到非ASPX的资源,例如HTML页面;

    3.将查询字符串作为URL的一部分(因为其他2种方法不能做到2次postback);

    需要使用汉字查询的请先转换 string message =server.urlencode("汉字");

    4.要确保HTML输出合法;

    5. 使用Session Cookies Application等对象进行页面间的数据传递。

    缺点:反应慢(两次请求),控件信息丢失,不能访问前一页面提交的数据信息。


        Server.Transfer()方法

    以下情况使用Response.Transfer()方法:

    1.aspx页面间的转换(不涉及登录);

    2.实现页面跳转的同时将页面的控制权进行移交;

    3.跳转之后浏览器地址栏的Url不变。

    优点:页面跳转过程中Request Session等保存的信息不变,跳转之后可以使用上一个页面提交的数据;这种方法的重定向请求是在服务器端的进行的,浏览器不知道页面已经发生了一次跳转

    提示:如果要将执行流程转入同一Web服务器的另一个ASPX页面,应当使用Server.Transfer而不是Response.Redirect,因为Server.Transfer能够避免不必要的网络通信,从而获得更好的性能和浏览效果。


       Server.Execute()方法

    以下情况使用Response.Execute()方法:

    1.执行同一个Web服务器上的另一个页面;

    2.页面执行完毕之后不改变位置;

    3.使用原始页面的表单数据和查询字符串集合;

    4.捕获一个ASPX页面的输出结果,然后将结果插入另一个ASPX页面的特定位置。

    注意:这种页面导航方式类似 于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把被调用页面Page指令的 EnableViewStateMac属性设置成False。默认情况下,被调用页面的输出追加到当前应答流。但是,Server.Execute方法有 一个重载的方法,允许通过一个TextWriter对象(或者 它的子对象,例如StringWriter对象)获取被调用页面的输出,而不是直接追加到输出流,这样,在原始页面中可以方便地调整被调用页面输出结果的 位置。


        <a>标签

    这是最常见的一种转向方法;
    <href=”test.aspx”></a>

        HyperLink控件

    HyperLink 是 Asp.net 服务器端控件 属性NavigateUrl指定要跳转到的Url地址,NavigateUrl是可以在服务器端使用代码修改的。

    <Asp:HyperLink id=”hyperlink” runat=”server” NavigatoeUrl=”test.aspx”>ok</Asp:HyperLink>

        总结:

    1 response.redirect 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护。但速度慢是其最大缺陷!redirect跳转机制:首先是发送一个 http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端。需要注意的是跳转后内部空间保存的所有数据信息将会丢失,所以需要用 到session。

    2 server.transfer 速度快,只需要一次postback ,但是。。。。他必须是在同一个站点下,因为它是server的一个方法。另外,他能跳过登录保护。你可以写个小程序试试:设计一个由页面一到页面二的跳 转,但要进入到页面二需要登录,form认证,但如果跳转语句使用transfer的话,那就不会弹出登录页面了。这个方法的重定向请求是发生在服务器 端,所以浏览器的url地址仍然保留的是原页面的地址!

    3 sever.execute 这个方法主要是用在页面设计上面,而且他必须是跳转同一站点下的页面。这个方法是需要将一个页面的输出结果插入到另一个aspx页面的时候使用,大部分是在表格中,将某一个页面类似于嵌套的方式存在于另一页面。

        收集整理自网络




  • 相关阅读:
    Mysql登录错误:ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded
    Docker配置LNMP环境
    Docker安装mysqli扩展和gd扩展
    Docker常用命令
    Ubuntu常用命令
    单例模式的优缺点和使用场景
    ABP 多租户数据共享
    ABP Core 后台Angular+Ng-Zorro 图片上传
    ERROR Error: If ngModel is used within a form tag, either the name attribute must be set or the form control must be defined as 'standalone' in ngModelOptions.
    AbpCore 执行迁移文件生成数据库报错 Could not find root folder of the web project!
  • 原文地址:https://www.cnblogs.com/qxw0816/p/1521960.html
Copyright © 2011-2022 走看看