`

c#.net网页跳转七种方法(转)

阅读更多

 

未知出处

一、目前在ASP.NET中页面传值共有这么几种方式:

1.Response.Redirect(" http://www.hao123.com%22,false/ );
目标页面和原页面可以在2个服务器上,可输入网址或相对路径。后面的bool值为是否停止执行当前页。
跳转向新的页面,原窗口被代替。
浏览器中的URL为新路径。
Response.Redirect 方法导致浏览器链接到一个指定的URL。当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代码302(表示 目标已经改变)以及新的目标URL。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。这就是说,使用 Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面的请求,得到一个 302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面。

2.Server.Transfer("Default2.aspx?name=zhangsan",true);
目标页面和原页面可以在同一个服务器上。
跳转向新的页面,原窗口被代替。
浏览器中的URL为原路径不变。
默 认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成True,就可 以保留第一个页面的表单数据和查询字符串。同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致 ASP.NET的机器验证检查(Machine Authentication Check,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合,必须把目标页面Page指令的 EnableViewStateMac属性设置成False。

3.Server.Execute("Default5.aspx?address=beijing);
目标页面和原页面可以在同一个服务器上。
跳转向新的页面,再跳转会原页面。
浏览器中的URL为原路径不变。
当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。
这种页面导航方式类似于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把被调用页面Page指令的EnableViewStateMac属性设置成False。

4.Response.Write("<script language='javascript'>window.open('aaa.aspx');</script>");
目标页面和原页面可以在2个服务器上,可输入网址或相对路径。
原窗口保留,另外新增一个新页面。


5.Response.Write("<script language='javascript'>window.location='Default2.aspx'</script>");
打开新的页面,原窗口被代替。

6.Response.Write("<script>window.showModalDialog('Default2.aspx')</script>");

7.Response.Write("<script>window.showModelessDialog('Default2.aspx')</script>");
(一)、showModalDialog和showModelessDialog有什么不同?
showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。
showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P)
(二)、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口?
在被打开的网页里加上<base target="_self">就可以了。这句话一般是放在<html>和<body>之间的。

同时新打开两个页面

 <input type="button" value="button" onclick="window.open('1.aspx');window.open('2.aspx');" />

二、如果在两个页面间需要大量的参数要传传递,如数据查询等页面时,用1 - 6的方法传值及其不便,而第 7 种方法确有一独特的优势!但使用该方法时需要一定的设置,现简单介绍一下该方法的使用方式:

  以查询数据页面为例:

   在查询页面中设置如下公有属性(QueryPage.aspx):

    public class QueryPage : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txtStaDate;
protected System.Web.UI.WebControls.TextBox txtEndDate;
   ...
/// <summary>
/// 开始时间
/// </summary>
public string StaDate
{
get{ return this.txtStaDate.Text;}
set{this.txtStaDate.Text = value;}
}
/// <summary>
/// 结束时间
/// </summary>
public string EndDate
{
get{ return this.txtEndDate.Text;}
set{this.txtEndDate.Text = value;}
}
....
private void btnEnter_Click(object sender, System.EventArgs e)
{
Server.Transfer("ResultPage.aspx");
}
}

   在显示查询结果页面(ResultPage.aspx):

    public class ResultPage : System.Web.UI.Page
{
   private void Page_Load(object sender, System.EventArgs e)
   {
//转换一下即可获得前一页面中输入的数据
QueryPage queryPage = ( QueryPage )Context.Handler;
Response.Write( "StaDate:" );
Response.Write( queryPage.StaDate );
Response.Write( "<br/>EndDate:" );
Response.Write( queryPage.EndDate );
  }
}

三、如果有许多查询页面共用一个结果页面的设置方法:

    在这种方式中关键在于“ QueryPage queryPage = ( QueryPage )Context.Handler; ”的转换,只有转换不依赖于特定的页面时即可实现。

如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!

1、先定义一个类,用该类放置所有查询参数:

/// <summary>
/// 结果页面中要用到的值
/// </summary>
public class QueryParams
{
private string staDate;
private string endDate;
/// <summary>
/// 开始时间
/// </summary>
public string StaDate
{
get{ return this.staDate;}
set{this.staDate = value;}
}
/// <summary>
/// 结束时间
/// </summary>
public string EndDate
{
get{ return this.endDate;}
set{this.endDate = value;}
}
}

2、接口定义:

/// <summary>
/// 定义查询接口。
/// </summary>
public interface IQueryParams
{
/// <summary>
/// 参数
/// </summary>
QueryParams Parameters{get;}
}

3、查询页面继承IQueryParams接口(QueryPage.aspx):

/// <summary>
///查询页面,继承接口
/// </summary>
public class QueryPage : System.Web.UI.Page, IQueryParams
{
protected System.Web.UI.WebControls.TextBox txtStaDate;
protected System.Web.UI.WebControls.TextBox txtEndDate;
private QueryParams queryParams;
   ...
/// <summary>
/// 结果页面用到的参数
/// </summary>
   public QueryParams Parameters
{
get
{
return queryParams;
}
}
....
private void btnEnter_Click(object sender, System.EventArgs e)
{
//赋值
queryParams = new QueryParams();
queryParams.StaDate = this.txtStaDate.Text;
queryParams.EndDate = this.txtEndDate.Text
Server.Transfer("ResultPage.aspx");
}
}

4、别外的页面也如此设置

5、接收页面(ResultPage.aspx):

public class ResultPage : System.Web.UI.Page
{
   private void Page_Load(object sender, System.EventArgs e)
   {
QueryParams queryParams = new QueryParams();
IQueryParams queryInterface;
//实现该接口的页面
if( Context.Handler is IQueryParams)
{
queryInterface = ( IQueryParams )Context.Handler;
queryParams = queryInterface.Parameters;
}
Response.Write( "StaDate:" );
Response.Write( queryParams.StaDate );
Response.Write( "<br/>EndDate:" );
Response.Write( queryParams.EndDate );
  }
}

 

分享到:
评论

相关推荐

    asp.net(c#)网页跳转七种方法

    ASP.NET(C#)网页跳转七种方法 ASP.NET(C#)网页跳转是一种常见的页面跳转方式,它可以将用户从一个页面跳转到另一个页面。跳转可以在同一个服务器上或不同的服务器上进行。下面我们将介绍七种ASP.NET(C#)网页...

    asp.net(c#)网页跳转七种方法小结

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

    Visual C# .NET程序设计经典

    《Visual C# .NET程序设计经典》是一本深入探讨C# .NET编程的权威著作,旨在帮助读者掌握C#语言的基础以及.NET Framework的核心概念。这本书通过丰富的实例和详细讲解,引领开发者逐步熟悉并精通C# .NET编程环境。 ...

    C#.net 实现页面登录和跳转 及跳转后的查询

    using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI....

    Visual C#.NET入门与提高

    LINQ是C#.NET中的一种查询语言,它使得数据查询更加直观和简洁,支持对各种数据源(如数据库、集合、XML等)进行操作。 十、Visual Studio集成开发环境 Visual Studio是微软的旗舰级开发工具,支持C#.NET的开发,...

    C#.net入门学习教程1

    C#.NET是微软开发的一种面向对象的编程语言,它在.NET框架的支持下,为开发者提供了高效、现代化的软件开发工具。本入门学习教程1旨在帮助初学者快速掌握C#.NET的基础知识,从零开始,逐步成长为熟练的程序员。 ...

    C#.NET图片滚动

    在C#.NET编程环境中,创建一个图片滚动效果的程序是一项常见的任务,特别是在构建网页或桌面应用时,我们可能需要展示一系列图片并以动画形式进行滚动,同时这些图片还能作为超链接,点击后跳转到相应的网页。...

    《Visual C#.NET程序设计(修订本)》作者杨晓光—PPT

    《Visual C#.NET程序设计(修订本)》是由著名计算机教育专家杨晓光编著的一本深入探讨C#.NET编程的教材。这本书旨在帮助读者掌握使用C#.NET进行软件开发的基本技能,尤其针对.NET Framework环境下的应用开发。PPT形式...

    C#.NET案例开发集锦代码.rar

    C#.NET是由微软公司开发的一种面向对象的编程语言,它是.NET框架的重要组成部分。它具有现代编程语言的诸多特性,如类型安全、垃圾回收、异常处理等,并且特别适合于构建Windows桌面应用、Web应用以及移动应用等。 ...

    C# .net IE浏览器设置

    在.NET框架下,C#语言提供了丰富的功能来与Internet Explorer(IE)浏览器进行交互,这在开发各种桌面应用、自动化测试或网页数据抓取时尤为有用。本篇将深入探讨如何利用C# .NET进行IE浏览器的配置和操作。 首先,...

    c#.net快捷键大全

    C# .NET快捷键是程序员在进行C#编程时提高效率的重要工具。了解并熟练使用这些快捷键可以显著提升开发速度,减少鼠标操作,让编程变得更加流畅。以下是一些常用的C# .NET快捷键及其作用: 1. **CTRL + SHIFT + B**...

    C#.NET开发者手册.rar

    《C#.NET开发者手册》是一本专为C#程序员量身打造的综合指南,它涵盖了C#编程语言的各个方面,旨在帮助开发者深入理解和熟练运用这一强大的.NET开发工具。C#,由微软公司推出,是面向对象的编程语言,广泛应用于...

    Visual C# .NET 程序设计教程 ppt课件

    Visual C# .NET 是微软公司开发的一种面向对象的编程语言,它是.NET Framework的重要组成部分。这个教程是华南农业大学信息(软件)学院提供的,旨在帮助学习者掌握C#语言的基础与高级概念,以便在.NET平台上构建...

    Visual C# .NET程序设计教程

    《Visual C# .NET程序设计教程》是一本深入讲解如何使用Microsoft的Visual C# .NET进行软件开发的教材。此教程以电子教案的形式提供,旨在帮助学习者掌握.NET框架下的C#编程技能,从而能够创建高效、可靠的Windows...

    一周学会C# java程序员转.NET必看

    【一周学会C#——java程序员转.NET必看】 C#是一种由微软开发的面向对象的编程语言,设计用于.NET Framework上。对于从Java转到.NET平台的程序员来说,理解C#的基本概念和语法是非常重要的。以下是一些关键知识点:...

    C#.net期末复习题

    ### C#.NET 期末复习知识点总结 #### 一、面向对象的基本概念 **面向对象**是一种编程思想,其核心理念是“万物皆对象”。在面向对象的语言中,对象是程序的基本单位,它不仅包含了数据(属性),还包含了操作这些...

    C#.NET第7章作业

    C#.NET是一种面向对象的编程语言,由微软公司开发,用于构建Windows应用程序、Web应用程序和移动应用程序。它在.NET框架上运行,提供了丰富的库支持和强大的开发工具,如Visual Studio。在"accp5.0 s2 C#.NET第7章...

    C#.net面试小集

    ### C#.NET 面试知识点详解 #### 1. 类和结构的区别 - **语法相似性**:类和结构的语法非常相似,都可以用来封装数据和行为。 - **存储方式**: - 结构(`struct`)是值类型,存储在栈中或作为值类型字段的一部分...

Global site tag (gtag.js) - Google Analytics