知识大全 ASP.NET四种页面导航方式之比较与选择

Posted

篇首语:举世皆浊我独清,众人皆醉我独醒。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET四种页面导航方式之比较与选择相关的知识,希望对你有一定的参考价值。

ASP.NET四种页面导航方式之比较与选择  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在ASP NET应用中 Web表单之间的导航有多种方式 用超级链接 用Response Redirect 用Server Transfer 或者用Server Execute 本文将分析这四种导航方式的异同及其优缺点 帮助你选择最佳的导航方式      一 超级链接  从一个表单进入另一个表单最简单的方式是使用HTML超级链接控件 在Web表单中 使用超级链接的HTML代码类如     进入表单     当用户点击该超级链接 x执行并将结果发送到浏览器 超级链接导航方式几乎可用于任何地方 包括HTML页面和普通的ASP页面 ASP NET还提供了另一种可替换使用的方法 即HyperLink服务器控件     
    NavigateUrl= x >进入表单   
    上述HTML代码的运行结果和第一个例子相同 因为ASP NET把HyperLink Web服务器控件视为一个HTML超级链接控件 但两者有一点重要的区别 HyperLink Web服务器控件可以在服务器端编程 具体地说 可以在程序代码中改变它的NavigateUrl属性 从而允许构造出具体目标可根据应用的当前状态动态变化的超级链接 例如     Private Sub Button _Click( _  ByVal sender As System Object _  ByVal e As System EventArgs) _  Handles Button Click  HyperLink NavigateUrl = WebForm aspx   End Sub    这段代码执行后 如果用户点击链接 他看到的将是WebForm aspx 而不是x      二 用程序控制重定向  虽然超级链接能够从一个页面导航到另一个页面 但这种导航方式是完全由用户控制的 有些时候 我们可能要用代码来控制整个导航过程 包括何时转到另一个页面 在这些场合 ASP NET有三种不同的方式可以达到相似的目的 调用Response对象的Redirect方法 调用Server对象的Transfer或Execute方法 这三种导航方式的行为基本相似 但也有区别      Response Redirect    Response Redirect方法导致浏览器链接到一个指定的URL 当Response Redirect()方法被调用时 它会创建一个应答 应答头中指出了状态代码 (表示目标已经改变)以及新的目标URL 浏览器从服务器收到该应答 利用应答头中的信息发出一个对新URL的请求     这就是说 使用Response Redirect方法时重定向操作发生在客户端 总共涉及到两次与服务器的通信(两个来回) 第一次是对原始页面的请求 得到一个 应答 第二次是请求 应答中声明的新页面 得到重定向之后的页面      Server Transfer    Server Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面 调用Server Transfer时 当前的ASPX页面终止执行 执行流程转入另一个ASPX页面 但新的ASPX页面仍使用前一ASPX页面创建的应答流     如果用Server Transfer方法实现页面之间的导航 浏览器中的URL不会改变 因为重定向完全在服务器端进行 浏览器根本不知道服务器已经执行了一次页面变换     默认情况下 Server Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面 但只要把该方法的第二个参数设置成True 就可以保留第一个页面的表单数据和查询字符串     同时 使用Server Transfer时应注意一点 目标页面将使用原始页面创建的应答流 这导致ASP NET的机器验证检查(Machine Authentication Check MAC)认为新页面的ViewState已被篡改 因此 如果要保留原始页面的表单数据和查询字符串集合 必须把目标页面Page指令的EnableViewStateMac属性设置成False      Server Execute    Server Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面 当指定的ASPX页面执行完毕 控制流程重新返回原页面发出Server Execute调用的位置     这种页面导航方式类似于针对ASPX页面的一次函数调用 被调用的页面能够访问发出调用页面的表单数据和查询字符串集合 所以要把被调用页面Page指令的EnableViewStateMac属性设置成False     默认情况下 被调用页面的输出追加到当前应答流 但是 Server Execute方法有一个重载的方法 允许通过一个TextWriter对象(或者它的子对象 例如StringWriter对象)获取被调用页面的输出 而不是直接追加到输出流 这样 在原始页面中可以方便地调整被调用页面输出结果的位置     为说明其工作过程 下面我们创建一个Web表单 放入一个按钮控件(Button )和一个文本控件(Literal ) 在设计界面中转入代码视图 加入一个System IO名称空间的Imports语句 然后加入用户点击按钮时执行的代码     Private Sub Button _Click( _  ByVal sender As System Object _  ByVal e As System EventArgs) _  Handles Button Click  Dim sw As StringWriter = New StringWriter()  Server Execute( x sw)  Literal Text = sw ToString()  End Sub    然后为同一个Web应用创建第二个页面x 转入该页面的HTML视图 修改其Page指令禁止ViewState检查     <%@ Page Language= vb AutoEventWireup= false Codebehind= x vb   Inherits= Navigate WebForm EnableViewStateMac= false %>    再转到设计视图 为第二个页面增加一些控件 接下来 把第一个页面设置成默认页面 启动应用 点击按钮 WebForm 的控件将显示在WebForm 中放置Literal按钮的地方 如图一 注意页面标题和URL仍旧显示原始页面WebForm    >   >    用Server Transfer或Server Execute方法实现导航时 还要注意一点 最后得到的页面可能不是合法的HTML页面 因为最终返回给客户端的页面可能包含多个和等标记 IE浏览器看来能够容忍并正确处理这类情形 但如果用户要用到其他的浏览器 最好仔细测试一下      三 比较与选择  既然从一个页面导航到另一个页面的办法有这么多 应该如何选择最佳的导航方式呢?下面是一些需要考虑的因素     如果要让用户来决定何时转换页面以及转到哪一个页面 超级链接最适合     如果要用程序来控制转换的目标 但转换的时机由用户决定 使用Web服务器的HyperLink控件 动态设置其NavigateUrl属性     如果要把用户连接到另一台服务器上的资源 使用Response Redirect     用Response Redirect把用户连接到非ASPX的资源 例如HTML页面     如果要将查询字符串作为URL的一部分保留 使用Response Redirect     如果要将执行流程转入同一Web服务器的另一个ASPX页面 应当使用Server Transfer而不是Response Redirect 因为Server Transfer能够避免不必要的网络通信 从而获得更好的性能和浏览效果     如果要捕获一个ASPX页面的输出结果 然后将结果插入另一个ASPX页面的特定位置 则使用Server Execute     如果要确保HTML输出合法 请使用Response Redirect 不要使用Server Transfer或Server Execute方法 cha138/Article/program/net/201311/13491

相关参考

知识大全 在ASP.NET 2.0中使用页面导航控件

在ASP.NET2.0中使用页面导航控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  几乎每个

知识大全 asp.net 2.0中使用sitemapDATAsource做页面导航

asp.net2.0中使用sitemapDATAsource做页面导航  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶

知识大全 ASP.NET2.0导航功能之配置会员和角色

ASP.NET2.0导航功能之配置会员和角色  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 ASP.NET页面传递值的方式

ASP.NET页面传递值的方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ASP.NET 页面aspx之扩展

ASP.NET页面aspx之扩展  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  需求某网站因业务

知识大全 ASP.NET页面之间传递值的几种方式

ASP.NET页面之间传递值的几种方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 asp.net跳转页面的三种方法比较

  responseredirect这个跳转页面的方法跳转的速度不快因为它要走个来回(次postback)但他可以跳转到任何页面没有站点页面限制(即可以由雅虎跳到新浪)同时不能跳过登录保护但速度慢是其

知识大全 asp.net 页面跳转

  跳转方式有以下几种  Hyperlink控件跳转  服务器传输  Servertransfer  浏览器重定向  HttpResponseRedirect  跨页发送  PreviousPage 

知识大全 浅谈ASP.NET与HTML页面关系

浅谈ASP.NET与HTML页面关系  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET

知识大全 Asp.net导航控件真的值得用吗

Asp.net导航控件真的值得用吗?  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n