一、目前在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¶m2=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¶m2=2222")
   接收页面: string str = Request["param1"]
7、Server.Transfer()方式。
   Server.Transfer("target.aspx?param1=1111¶m2=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 );
      }
    }

转载于:https://www.cnblogs.com/weihengblogs/archive/2012/08/22/2650672.html

ASP.NET页面传值的几种方式相关推荐

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

    大致概括一下,ASP.NET 页面之间传递值得方式大致可以分为如下几种:Request.QueryString["name"],Request.Form("name&qu ...

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

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

  3. Struts 往jsp页面传值的三种方式 以及获取Jsp页面值得一种方式

     //传值的的第一种方式直接在action中getset方法完成值的传递 第一种方法值是放在值栈valuestack中其余两种是放在actioncontext中 this.setName(&quo ...

  4. 微信小程序页面传值的几种方式总结

    一.storage wx.setStorage({key: "key",data: value}) 通过getStorage回调方式获取data值,或者通过wx.getStorag ...

  5. 微信小程序页面传值的几种方式

    setStorage/getStorage(setStorageSync/getStorageSync)存储到缓存,在页面的onShow阶段绑定 wx.navigateTo({url: '-/page ...

  6. 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】...

    页面传值--最佳答案6种方式: 一. 使用QueryString变量 QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全 ...

  7. 关于ASP.Net页面传值的一些学习知识(一)他人的经验

    关于ASP.Net页面传值的一些学习知识 首先是ASP.Net的各种传值方式,这里引用以下链接阅读,本人目前使用的是Session和Cookie传值方法. [1]: https://www.cnblo ...

  8. php表单传值哪几种方式,PHP表单传值的方式有哪些?

    本篇文章主要给大家介绍PHP表单传值的两种方式,一种是通过$_GET变量 .另一种是通过$_POST变量.(相关推荐:<PHP教程>) 下面我们就结合具体的PHP代码示例给大家介绍,PHP ...

  9. 【Spring】SpringMVC 作用域传值的 4 种方式

    一.四大作用域复习 2.1 page 2.1.1 在当前页面不会重新实例化. 2.2 request 2.2.1 在一次请求中同一个对象,下次请求重新实例化一个request 对象. 2.3 sess ...

最新文章

  1. linux svn 开机启动
  2. golang中的切片
  3. 在DigitalOcean玩Kubernetes(K8S)
  4. Javag工程师成神之路(2019正式版)
  5. 混沌模型时间序列预测
  6. MySQL设置表的字段值自动增加
  7. python打开浏览器怎么写_使用python调用浏览器并打开一个网址的例子
  8. bootstrap-datepicker 日期格式设置
  9. 如何处理Docker错误消息:please add——insecure-registry 1
  10. 【君义精讲】多种方法求斐波那契数列
  11. 实践丨SpringBoot整合Mybatis-Plus项目存在Mapper时报错
  12. 二叉树的实现(Java语言描述)
  13. 苹果Safari中保存的密码如何导入Chrome浏览器?
  14. Miracast/HDCP
  15. BUUCTF Rabbit加密
  16. 产品经理,该如何做好「自己」这款产品?
  17. android 名片识别 简书,nodejs实现名片识别
  18. 微软宣布与神州数码合作希望利用区块链技术优化金融、电子商务、娱乐等行业!
  19. php自动获取节气对应的年月日_php如何通过日期获取农历、节日、节气?
  20. 变异系数在线计算机,数理统计在线计算器

热门文章

  1. javascript 计算器、动态时钟、表格复选框全选(扩展)、轮播图、36选7、随机数...
  2. Material Design控件使用学习 TabLayout+SwipeRefreshlayout
  3. fdisk -l 找不到分区怎么办?想办法找到隐藏分区。
  4. WINCE 按键驱动编写
  5. ESRI2007应用开发大赛总结
  6. 一起来开发Android的天气软件(三)——使用Volley实现网络通信
  7. Android实战技巧之十二:Android Studio导入第三方类库、jar包和so库
  8. Handler消息机制(一):Linux的epoll机制
  9. 再次修订后的版本。。。。。。1.0(发布版,射线求交三角形)
  10. Java学习笔记33