在asp.net应用中,web表单之间的导航有多种方式:用超级链接,用response.redirect,用server.transfer,或者用server.execute。本文将分析这四种导航方式的异同及其优缺点,帮助你选择最佳的导航方式。
一、超级链接
从一个表单进入另一个表单最简单的方式是使用html超级链接控件。在web表单中,使用超级链接的html代码类如:
<a href="webform2.aspx">进入表单2</a>
当用户点击该超级链接,webform2.aspx执行并将结果发送到浏览器。超级链接导航方式几乎可用于任何地方,包括html页面和普通的asp页面。asp.net还提供了另一种可替换使用的方法,即hyperlink服务器控件:
<form id="form1" method="post" runat="server">
<asp:hyperlink id="hyperlink1" runat="server"
navigateurl="webform2.aspx">进入表单2</asp:hyperlink>
</form>
上述html代码的运行结果和第一个例子相同,因为asp.net把hyperlink web服务器控件视为一个html超级链接控件。但两者有一点重要的区别,hyperlink web服务器控件可以在服务器端编程。具体地说,可以在程序代码中改变它的navigateurl属性,从而允许构造出具体目标可根据应用的当前状态动态变化的超级链接,例如:
private sub button1_click( _
byval sender as system.object, _
byval e as system.eventargs) _
handles button1.click
hyperlink1.navigateurl = "webform3.aspx"
end sub
这段代码执行后,如果用户点击链接,他看到的将是webform3.aspx,而不是webform2.aspx。
二、用程序控制重定向
虽然超级链接能够从一个页面导航到另一个页面,但这种导航方式是完全由用户控制的。有些时候,我们可能要用代码来控制整个导航过程,包括何时转到另一个页面。在这些场合,asp.net有三种不同的方式可以达到相似的目的:调用response对象的redirect方法,调用server对象的transfer或execute方法。这三种导航方式的行为基本相似,但也有区别。
2.1 response.redirect
response.redirect方法导致浏览器链接到一个指定的url。当response.redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代码302(表示目标已经改变)以及新的目标url。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新url的请求。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器