html button 跳转ASP.NET页面跳转技术总结

对于一个Web应用程序而言,在各个页面之间自由的跳转是是最基本的要求。ASP.NET为页面跳转供给了多种方法,这些方法之间有些细微的差别对于考试,或是高级的开发很是重要。下面我们结合实例来学习一下。 
页面跳转方法主要的可以归纳五种: 
一、哄骗Hyperlinks 控件; 
二、Cross-Page技能,像Button这样的控件有一个叫PostBackUrl的属性,只要给这个属性设置一个URL就可以实现跳转; 
三、Page类的Response属性的Redirect方法; 
四、Page类的Server属性的Transfer方法; 
五、Page类的Server属性的Execute。 
她们之间的区别我们可以通过以下的例子直不雅的看出来。 
起首,新建一个Web项目。新建一个名称为WebForm.aspx的页面,双击页面在Page_Load事件中添加如下代码: 
Response.Write("WebForm.aspx Load<br/>"); 
之后在Default.aspx页面上放置一个HyperLink控件,同时将Text属性设置为"跳转到WebForm.aspx",NavigateUrl属性设置为"~/ WebForm.aspx"。表示在页面上显示"跳转到WebForm.aspx"字符串为一个超链,点击这串文字时跳转到"~/WebForm.aspx"页面,其中"~"表示当前网站的根目录,当然你也可以输入完整的URL。 
再放置4个Button控件,将个Button的id和Text属性设置为不异值:CrossPage、Redirect、Transfer、Execute。 
放置一个Literal控件,这个控件的作用是可以把作为HTML代码的字符串在页面上显示出来。 
将CrossPage 按键的PostBackUrl属性设置为"~/WebForm.aspx",双击按键在Page_Load事件中添加代码:Response.Write("Click CrossPage Button<br/>"); 
双击Redirect按键,在Click事件中添加如下代码: 
Response.Write("Before Redirect Button<br/>"); 
Response.Redirect("~\\WebForm.aspx"); 
Response.Write("After Redirect Button<br/>"); 
双击Transfer按键,在Click 
事件中添加如下代码: 
Response.Write("Before Transfer Button<br/>"); 
Server.Transfer("~\\WebForm.aspx"); 
Response.Write("After Transfer Button<br/>"); 
双击Execute1按键,在Click 
事件中添加如下代码: 
Response.Write("Before Execute1 Button<br/>"); 
Server.Execute("~\\WebForm.aspx"); 
Response.Write("After Execute1 Button<br/>"); 
双击Excute2按键,在Click 
事件中添加如下代码: 
Response.Write("Before Execute2 Button<br/>"); 
System.IO.StringWriter wr = new System.IO.StringWriter(); 
Server.Execute("~\\WebForm.aspx", wr); 
Literal1.Text = wr.ToString(); 
Response.Write("After Execute2 Button<br/>"); 
最后在Page_Load事件中添加 
Response.Write("Default.aspx Load<br/>"); 
预设时效果如图1 
运行Default.aspx页面,浏览器打开Default.aspx页面并且会显示"Default.aspx"字样。当我们点击HyperLink控件或CrossPage按键,浏览器跳转到WebForm.aspx页面,并且显示"WebForm.aspx"字样,而CrossPage按键Click事件的"Click CrossPage Button"并没有输出。这两种跳转技能称为"Javascript跳转",在用户鼠标点击它们时,直接运行Javascript脚本进行跳转,而不需要传回到Web服务器上处理。二者的区别是HyperLink控件可以跳转到其他网站的页面,而CrossPage按键不行。 
如果我们点击Redirecte按键,浏览器同样跳转到WebForm.aspx页面,并且显示"WebForm.aspx"字样,而Redirecte按键Click事件中的信息并没有输出。Response.Redirect方法打断了Web服务器对Default.aspx页面处理,径直转而处理WebForm页面,而Default页面进行到一半的处理全部丢弃。所以我们看不到Redirecte按键Click事件输出的信息。这种方式称为"客户端跳转"。由于跳转是在客户端出发的,打断了Web服务器的处理。这种方法可以跳转到其它网站。 
如果我们点击Transfer按键,虽然浏览器也跳转到WebForm.aspx页面,但显示为: 
Default.aspx Load 
Before Transfer Button 
WebForm.aspx Load 
不像"客户端跳转",这里Web服务器并没有丢弃前一页面的处理,而是把进行到一半的处理转到第二个页面了。这种方式称为"服务端跳转",其独特的地方是:1)处理速度快;2)浏览器地址栏仍显示原来的URL;3)不能跳转到非ASP.NET页面或其它web服务器。 
如果我们点Execute1按键,WebForm页面上的输出比Transfer按键的输出在最后又多了"After Execute1 Button"一句,成为: 
Default.aspx Load 
Before Execute1 Button 
WebForm.aspx Load 
After Execute1 Button 
这种方式称为"应用程序间跳转",它没有打断Web服务器第一个页面的处理过程,而是另外开启一个线程处理第二个页面,终极的效果是将两个页面的处理结果合二为一。Execute2按键中程序的作用与Execute1按键类似,只不过哄骗Literal控件控制了合并方式。 
由这五中页面跳转方式继而又会引发一个问题,那就是"确定调用页面的方式"。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值