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

1、表单提交,    <form action= "target.aspx" method = "post" name = "form1"> <input name = "param1" value = "1111"/> <input name = "param2" value = "2222"/>    </form>    ....    form1.submit();    ....    此种方在ASP。NET中无效,因为ASP。NET的表单总是提交到自身页面,如果要提交到别一页面,需要特殊处理。 2、<A href="target.aspx?param1=1111&param2=2222">链接地址传送</A> 接收页面: string str = Request["param1"] 3、Session共享 发送页面:Session("param1") = "1111";  按收页面  string str = Session("param1").ToString();  4、Application共享 发送页面: Application("param1") = "1111";   按收页面: string str = Application("param1").ToString();  此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。 5、Cookie 6、Response.Redirect()方式    Response.Redirect("target.aspx?param1=1111&param2=2222")    接收页面: string str = Request["param1"] 7、Server.Transfer()方式。    Server.Transfer("target.aspx?param1=1111&param2=2222")    接收页面: string str = Request["param1"]

二、如果在两个页面间需要大量的参数要传传递,如数据查询等页面时,用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中页面传值的更多相关文章

  1. c#ASP.NET中页面传值共有这么几种方式

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.Response.Redirect("http://www.hao123.com",false); 目标页面和原页面可以在 ...

  2. ASP.Net中页面传值的几种方式

    开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...

  3. ASP.NET之页面传值

    一.目前在ASP.NET中页面传值共有这么几种方式: 1.使用QueryString变量QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全 ...

  4. 关于asp.net中页面事件加载的先后顺序

    一.ASP.NET 母版页和内容页中的事件 母版页和内容页都可以包含控件的事件处理程序.对于控件而言,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件.控件事件 ...

  5. asp.net 跨页面传值常用方法

    常用方法有以下: 1.queryString 2.form-post控件传递 3.cookie 4.application 5.session querystring: http://website. ...

  6. ASP.NET跨页面传值技巧[总结]

    个人网站:http://www.51pansou.com .net视频下载:.net视频教程 .net源码下载:.net源码 关于页面传值的方法,我就我个人观点做了些总结,希望对大家有所帮助. 1.  ...

  7. MVC中页面传值方式总结

    MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下: 一.Controller----------->View(控制器传到视图) 1.View ...

  8. ASP.NET MVC教程四:ASP.NET MVC中页面传值的几种方式

    准备 在Models文件夹里面新添加Student实体类,用来模拟从Controller向View传递数据,Student类定义如下: using System; using System.Colle ...

  9. ASP.NET跨页面传值技巧

      1 使用QueryString变量    QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用  ...

随机推荐

  1. .Net中把图片等文件放入DLL中,并在程序中引用

    原文:.Net中把图片等文件放入DLL中,并在程序中引用 [摘要] 有时我们需要隐藏程序中的一些资源,比如游戏,过关后才能看到图片,那么图片就必须隐藏起来,否则不用玩这个游戏就可以看到你的图片了,呵呵 ...

  2. A + B Again 2057 有符号的64进位的运算

    Problem Description There must be many A + B problems in our HDOJ , now a new one is coming.Give you ...

  3. Merge into的使用详解-你Merge了没有

    Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key. Oracle在9i引入了merge命令, 通过这个merge你能够在一个SQL语句中对一 ...

  4. 连载:面向对象的葵花宝典:思维、技能与实践(40) - DECORATOR模式

    掌握了道路后,设计模式,我们将以新的方式来理解设计模式,这种方法更简单.更直观.不信?子就知道了 =================================================== ...

  5. oracle_删除同一列的重复数据

    <!--删除同一列的重复数据 rowid 在orcle中 数据的物理地址---> delete from tbl_over_picture_alarm a where rowid not ...

  6. Tomcat剖析(二):一个简单的Servlet服务器

    Tomcat剖析(二):一个简单的Servlet服务器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三) ...

  7. java基金会 之 HashMap统计csvWord文档

    一:知识的补充( 这个HashMap Map 和 c++的Map还是有非常大的区别,惊人的差异大的人,当然,两者的作用是相同的,但函数名出一个非常大的.即使iterator的差是非常大的 ) (1)H ...

  8. select查询原理

    原文:select查询原理 我并非专业DBA,但做为B/S架构的开发人员,总是离不开数据库,一般开发员只会应用SQL的四条经典语句:select ,insert,delete,update.但是我从来 ...

  9. Introducing Visual Studio’s Emulator for Android

    visual studio 2015支持Android开发了. Microsoft released Visual Studio 2015 Preview this week and with it ...

  10. 搭建一个三台服务器的Memcached集群

    关于memcached的基础知识可以查看博客其他博文,这里只记录了搭建的过程,谢谢! 1.分别在三台服务器上安装Memcached并启动 第一.由于memcached是基于libevent的事件处理, ...