zoukankan      html  css  js  c++  java
  • 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控件控制了合并方式。
    由这五中页面跳转方式继而又会引发一个问题,那就是"确定调用页面的方式"。

  • 相关阅读:
    CComboBox(组合框)控件 学习要点
    弹出菜单的实现
    剪贴板(clipboard)功能
    bash1---基本0
    CHAPTER 2 -----Reapresenting and Manipulating Information(1)
    关于Linux磁盘分区与双系统
    CHAPTER 1 ----- a tour of computer sysytems(3)
    CHAPTER 1 ----- a tour of computer sysytems(2)
    CHAPTER 1 ----- a tour of computer sysytems(1)
    [2017.4.14] 随笔一 ------头文件中用宏定义调试语句(引用C语言写爬虫的初学项目)
  • 原文地址:https://www.cnblogs.com/seapub/p/2378267.html
Copyright © 2011-2022 走看看