ASP.NET中页面传值
一、目前在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 ); } }
ASP.NET中页面传值的更多相关文章
- c#ASP.NET中页面传值共有这么几种方式
一.目前在ASP.NET中页面传值共有这么几种方式: 1.Response.Redirect("http://www.hao123.com",false); 目标页面和原页面可以在 ...
- ASP.Net中页面传值的几种方式
开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...
- ASP.NET之页面传值
一.目前在ASP.NET中页面传值共有这么几种方式: 1.使用QueryString变量QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全 ...
- 关于asp.net中页面事件加载的先后顺序
一.ASP.NET 母版页和内容页中的事件 母版页和内容页都可以包含控件的事件处理程序.对于控件而言,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件.控件事件 ...
- asp.net 跨页面传值常用方法
常用方法有以下: 1.queryString 2.form-post控件传递 3.cookie 4.application 5.session querystring: http://website. ...
- ASP.NET跨页面传值技巧[总结]
个人网站:http://www.51pansou.com .net视频下载:.net视频教程 .net源码下载:.net源码 关于页面传值的方法,我就我个人观点做了些总结,希望对大家有所帮助. 1. ...
- MVC中页面传值方式总结
MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下: 一.Controller----------->View(控制器传到视图) 1.View ...
- ASP.NET MVC教程四:ASP.NET MVC中页面传值的几种方式
准备 在Models文件夹里面新添加Student实体类,用来模拟从Controller向View传递数据,Student类定义如下: using System; using System.Colle ...
- ASP.NET跨页面传值技巧
1 使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用 ...
随机推荐
- 从客户端(FCKeditor1="<p>...")中检测到有潜在危险的 Request.Form 值。
从客户端(FCKeditor1="<p>...")中检测到有潜在危险的 Request.Form 值. 说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理 ...
- 【android】ImageView的src和background以及两者之间的神奇的差异
一.ImageView中XML属性src和background的差别: background会依据ImageView组件给定的长宽进行拉伸.而src就存放的是原图的大小,不会进行拉伸.src是图片内容 ...
- GitHub版本控制
版本控制-GitHub 前面几篇文章,我们介绍了Git的基本用法及Git服务器的搭建,本篇文章来学习一下如何使用GitHub.GitHub是开源的代码库以及版本控制库,是目前使用网络上使用最为广泛的服 ...
- rman(上)
CHANGE命令更改备份和副本的状态 1.change backupset 100 unavailable CATALOG命令是用来备份的碎片和复制信息到RMAN数据库 1.息增加到RMAN ...
- SQL随着子查询结果更新多个字段
笔者:iamlasong 要求:表格内容需要改变,在临时表中内容的变化,使用SQL官方声明更新表若干领域. 假设更新一个字段,直接用字段名=子查询就能够了,多个字段更新,将字段在括号里并列写出就可以, ...
- do...while(0)神奇
1. do...while(0)消除goto语句. 通常,假设在一个函数中開始要分配一些资源.然后在中途运行过程中假设遇到错误则退出函数,当然,退出前先释放资源,我们的代码可能是这样: version ...
- ASP.NET MVC 使用TryUpdateModel 更新的技巧
有使用 ASP.NET MVC 的朋友應該會對於 TryUpdateModel 有一定的認知,他不但可以利用 Metadata 來做欄位的驗證確保資料的正確性,也可以指定更新的條件以及不更新的條件來達 ...
- 玩转Vim-札记
玩转Vim-札记 距上篇博文已有一周有余,上次主要介绍了编辑器之神Vim的起源.安装并介绍了两种模式以及一些简单的操作.本次将继续对Vim的使用进行介绍. 登堂入室 首先接着说移动吧: 1 0 → 数 ...
- Flex 日志管理
在Flex中调试方法有两种: 一是用trace()函数,在flex builder中进行调试: 二是用logTarget类,例如以下代码: // Create a target. var logTar ...
- HBase文件格式演变之路
Apache HBase是Hadoop的分布式开源的存储管理工具,很适合随机实时的io操作. 我们知道,Hadoop的Sequence File是一个顺序读写,批量处理的系统.可是为什么HBase能做 ...